2012-12-11 150 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