2016-05-12 6 views
0

ここで私は配列を持ち、条件文に従っていくつかの要素を抽出します。Matlab配列のインデックスと補完インデックス

A = 10:-1:1; 
idx = find(A>3); 

残りの要素を取得する直接の方法は1,2,3ですが、返されるidxを使用していますか?

+0

'IDX =検索(<= 3);'? – rayryeng

+0

本当に、私は要素のインデックスと残りの部分をすべて1行で取得する方法があると思っただけです。[idx、rest] = ... – Hamidreza

+0

できません。これを行うには、追加のコード行を記述する必要があります。 'find'はブール条件を満たすインデックスのみを入力として探します。条件を満たしていないものを同時に見つけることはできません。 – rayryeng

答えて

3

を他の答えに。アレイAを1度しか通過できません。私はそうするブールインデックスを好む:

idx1 = A>3; 
idx2 = ~idx1; 

あなたはリターンを見つけるの指標と同様のゲームを行うことができます:

idx1 = find(A>3) 
idx2 = setdiff(1:length(A), idx1); % assuming A is a vector 
3

これは、条件文に関するものであれば、「find」を使用することはできません。あなたが使用することができ :

X=A(A>3) %for the conditional Elements or 
Y=A(~(A>3)) % for the other group 
+0

すでに得られているXを使ってYを見つけることはできますか? – Hamidreza

3

単に ">" "< =" に署名変更:

idx = find(A<=3); 

あなたはまた、ブール逆使用することができます。これは、相補的な

idx = find(~(A>3)); 
関連する問題