2012-12-11 154 views
2

我找不到怎么办在MATLAB下,任何帮助表示赞赏:评估矩阵,然后提取行到一个新的矩阵

  • 我有尺寸(MXN)的矩阵X,我想找出哪些行的第一个元素大于同一行的其余元素。然后把在一个新的矩阵Y.满足这一行

例子: 如果X

2 0 1 
3 8 6 
7 2 5 

Y就应该是

2 0 1 
7 2 5 

回答

1

您正在寻找bsxfunall

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

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

嗯,我刚刚了解到bsxfun。很好,在一行中:D – user1890992

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

会给你你的新矩阵。

+0

+1漂亮优雅:) –

+0

@RodyOldenhuis谢谢你,但你要短得多:) – HebeleHododo

+0

非常感谢。非常简单,非常明确:) – user1890992