0

Octave に anx 2 マトリックスがあり、matrix(row, 1) および matrix(row, 2) 要素がゼロでないすべての行を見つけたいと考えています。次のような for ループを使用できます。

[nrows, ncols] = size(data);
for i = 1:nrows
    if(data(i, 1) ~= 0 && data(i, 2) ~= 0)
        % Do something
    end
end

それに関する問題は、n が約 300 万であり、Octave での反復に永遠にかかることです。find でやる方法もあるような気がしますが、まだ思いつきません。

誰にもアドバイスはありますか?

ありがとう!

4

3 に答える 3

2

論理インデックスを使用して作成できます。

idx = all(data(:,1:2)~=0, 2);

結果のベクトルには、両方のセルがゼロ以外のすべての行に s がidx含まれます。10

于 2013-02-25T14:36:34.440 に答える
0

この場合(ゼロ値に関連しているため)、次の方法も機能するはずです

idx=(data(:,1).*data(:,2)~=0)

しかし、@ H.Muster のソリューションは、すべてのケースで機能するため、より優れたソリューションです。

于 2013-02-25T15:08:05.830 に答える
0

パフォーマンスが問題の場合: 両方の列を論理に変換してみてください:

useful = and(logical(data(:,1)),logical(data(:,2)))

その後、再び論理インデックスを使用できます。

filtered = data(useful,:)
于 2013-02-25T15:33:52.920 に答える