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