2

我在 MATLAB 中找不到如何执行以下操作,不胜感激:

  • 我有一个维度为 (mxn) 的矩阵 X,我想找出哪些行的第一个元素大于同一行的其余元素。然后将满足这一点的行放入一个新的矩阵 Y 中。

示例:如果 X 是

2  0  1
3  8  6
7  2  5

Y 将是

2  0  1
7  2  5
4

2 回答 2

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

会给你你的新矩阵。

于 2012-12-11T11:11:06.243 回答
1

您正在寻找bsxfunall

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

Y = X( all(bsxfun(@gt, X(:,1), X(:,2:end)),2), :)
于 2012-12-11T11:12:00.517 回答