2016-08-16 3 views
0

非常に簡単かもしれない問題が発生しましたが、何度か使っています。私はどんな助けにも感謝します。Matlabのマスキング

私は、インデックスが0と1である行列R(1024x1280倍)と3000点の位置であるF(3000x2 double)のもう1つの行列(もちろんR行列に関して)を持っています。どのようにしてR行列の位置が1であるF行列の点を選ぶことができますか? 私は、以下の方法を試してみましたが、それでも私に正しい答え与えるものではありません:私はFでループのために書くと一点(F(1,1)によっていずれかを選択し、F(1,2))とで同じポイントをかどうかを確認できることを知っている

siz= size(R); 
fet = false(siz(1),siz(2)); 
fet(F(:,1),F(:,2)) = true; 
[xf,yf]=find(fet==1 & R==1);` 

をR行列は1に等しく、その点を保存する。しかし、これは非効率的な方法です。誰も私にこの点で手を差し伸べることはできますか? ベスト、

答えて

2

あなたはブール値を取得するためにRに線形インデックスと、インデックスにFを変換するsub2indを使用することができます。

bool = logical(R(sub2ind(size(R), F(:,1), F(:,2)))); 
touse = F(bool,:); 
+0

ありがとうございます。そしてブーリアンからFの正しい点を得る方法。私はmatlabの初心者です。愚かな質問を申し訳ありません。 – Sam

+0

@Sam例で更新されました。 – Suever

+0

ありがとうございます。それは私にこのエラーを与えました:添字インデックスは、正の整数または論理でなければなりません。私はこのform.tout = F(論理(ブール)、:)に変更しました。適切に動作します。どうもありがとう。 – Sam