然后评估然后将矩阵的行提取到新矩阵中

时间:2012-12-11 10:51:07

标签: matlab

我无法在MATLAB中找到如何执行以下操作,感谢任何帮助:

  • 我有一个维度矩阵X(mxn),我想找到哪些行的第一个元素大于同一行的其余元素。然后将满足此要求的行放在新矩阵Y中。

实施例: 如果X是

2  0  1
3  8  6
7  2  5

Y将是

2  0  1
7  2  5

2 个答案:

答案 0 :(得分:1)

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, :);

会为您提供新的矩阵。

答案 1 :(得分:1)

您正在寻找bsxfunall

X = [
    2  0  1
    3  8  6
    7  2  5];

Y = X( all(bsxfun(@gt, X(:,1), X(:,2:end)),2), :)