3

単純なはずなのですが、意外なことに、ここでも試行錯誤しても、この問題の答えは見つかりませんでした。
(ある条件に従って) 行列から値を取得し、その値をベクトルに配置したいと考えています。一致する値の添え字インデックスも必要です。大量のデータがあるため、for ループが出ています。

これは正しい(しかし反復的な)答えです:

[I,J] = find(A > 5);
values = zeros(numel(I),1);
for i=1:numel(I)
    values(i) = A(I(i),J(i));
end

試してみvalues = A(I,J)ましたが、これは n x 1 ではなく n x n です。

4

1 に答える 1

7

行列をベクトルのように暗黙的に扱うことができます (線形インデックス):

I = find(A > 5);
values = A(I);

論理インデックスを使用すると、これをより効率的に実行できることに注意してください。

values = A(A > 5);
于 2010-10-17T22:41:50.063 に答える