【问题标题】:Evaluating then extracting rows of a matrix into a new matrix评估然后将矩阵的行提取到新矩阵中
【发布时间】:2012-12-11 10:51:07
【问题描述】:

我在 MATLAB 中找不到如何执行以下操作,不胜感激:

  • 我有一个维度为 (mxn) 的矩阵 X,我想找出哪些行的第一个元素大于同一行的其余元素。然后将满足这一条件的行放入一个新的矩阵 Y 中。

示例: 如果 X 是

2  0  1
3  8  6
7  2  5

Y 会是

2  0  1
7  2  5

【问题讨论】:

    标签: matlab


    【解决方案1】:

    您正在寻找bsxfunall

    X = [
        2  0  1
        3  8  6
        7  2  5];
    
    Y = X( all(bsxfun(@gt, X(:,1), X(:,2:end)),2), :)
    

    【讨论】:

      【解决方案2】:

      max 函数适用于这样的矩阵:

      如果 A 是矩阵,max(A) 将 A 的列视为向量,返回 包含每列中最大元素的行向量。

      这意味着您将需要处理 x 的转置。

      x = [2 0 1;
           3 8 6; 
           7 2 5];
      xt = x';
      [maxVal, maxIdx] = max(xt);
      

      现在,如果您的 maxIdx 值为 1,则表示第一个值最大。

      y = x(maxIdx == 1, :);
      

      会给你你的新矩阵。

      【讨论】:

      • @RodyOldenhuis 谢谢,但你的要短得多 :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-25
      • 1970-01-01
      • 2021-04-08
      • 2021-08-25
      • 1970-01-01
      • 2021-10-14
      相关资源
      最近更新 更多