我找不到怎么办在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