我在 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
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
和all
:
X = [
2 0 1
3 8 6
7 2 5];
Y = X( all(bsxfun(@gt, X(:,1), X(:,2:end)),2), :)