我找不到怎麼辦在MATLAB下,任何幫助表示讚賞:評估矩陣,然後提取行到一個新的矩陣
- 我有尺寸(MXN)的矩陣X,我想找出哪些行的第一個元素大於同一行的其餘元素。然後把在一個新的矩陣Y.滿足這一行
例子: 如果X
2 0 1
3 8 6
7 2 5
Y就應該是
2 0 1
7 2 5
我找不到怎麼辦在MATLAB下,任何幫助表示讚賞:評估矩陣,然後提取行到一個新的矩陣
例子: 如果X
2 0 1
3 8 6
7 2 5
Y就應該是
2 0 1
7 2 5
您正在尋找bsxfun
和all
:
X = [
2 0 1
3 8 6
7 2 5];
Y = X(all(bsxfun(@gt, X(:,1), X(:,2:end)),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, :);
會給你你的新矩陣。
嗯,我剛剛瞭解到bsxfun。很好,在一行中:D – user1890992