Nx3行列があり、1列目と2列目が特定の条件を満たすすべての行を選択したいと思います。これが私が欲しいものを示す(機能しない)例です:
a = [1 3 0; 2 3 1; 4 9 2];
a = a(a(:, 1)>3 && a(:, 2)>3)
計算集約的なループに頼ることなくこれを達成するための方法はありfor
ますか?
Nx3行列があり、1列目と2列目が特定の条件を満たすすべての行を選択したいと思います。これが私が欲しいものを示す(機能しない)例です:
a = [1 3 0; 2 3 1; 4 9 2];
a = a(a(:, 1)>3 && a(:, 2)>3)
計算集約的なループに頼ることなくこれを達成するための方法はありfor
ますか?
これはあなたのために働くはずです:
a = [1 3 0; 2 3 1; 4 9 2];
a = a(a(:, 1)>3 & a(:, 2)>3,:) %you should put element-wise and (&) and put the colon (:) operator which indicates 'all columns'
ans =
4 9 2
別の方法:
ind1=find(a(:,1)>3);
ind2=find(a(:,2)>3);
a=a(intersect(ind1,ind2),:);
forループは実際には計算集約的ではなく、実際には入力のサイズに比例します。Nをループするのが道です。