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 に答える