レッツは、私が場所C
を見つけたいとA
がB
行列
B=[1 0 1 0 0 1 0 1 0 1 1 0 1 1];
から論理1
から来行列
A=[0.8 0.9 0.7 0.5 0.3 0.8 0.2 0.1]; % 8 points
を持っていると言う満たす
C=find(A<0.6 & A>0.35)
ここでansはです。。私の質問はB=8
の本当の場所を取得する方法ですか?あなたがどこかに離れて保存されたインデックスを持っていない場合を除き
レッツは、私が場所C
を見つけたいとA
がB
行列
B=[1 0 1 0 0 1 0 1 0 1 1 0 1 1];
から論理1
から来行列
A=[0.8 0.9 0.7 0.5 0.3 0.8 0.2 0.1]; % 8 points
を持っていると言う満たす
C=find(A<0.6 & A>0.35)
ここでansはです。。私の質問はB=8
の本当の場所を取得する方法ですか?あなたがどこかに離れて保存されたインデックスを持っていない場合を除き
、私はあなたがここに選択肢の多くを持っていることを見ることができません。
tmp = find(B);
idx = tmp(C);
実際にこのマッピングを複数回使用する場合は、バイナリベクターの代わりにインデックスを格納することをお勧めします。バイナリベクトルが疎である(またはブール値のベクトルでない)場合には、より少ないメモリ量しか必要としないので、メモリ効率が向上します。
あなたもバイナリーベクターを必要とする場合は、あなたが可能にケース・メモリの両方を保存する必要があります。 Matlabでこの種のマッピングを行ったとき、私はバイナリベクトル(マスク)とインデックスベクトルの両方を実際に使用しました。これにより、最初にマスクをインデックスにマッピングしてからフィルタリングされた位置にインデックスを付けることができなくなりました(つまり、毎回tmp = find(B); idx = tmp(C);
の部分をスキップして、直接idx = allIdx(C)
に行く)。
親愛なるpatrik、関数idx = allIdx(C)のエラーが発生しました。 – Acobot
@Acobot 'allIdx'は関数ではありません。これは、Bの 'allIdx = find(B);'にそれらを格納するベクトルの例として意図されていました。最初の2行はトリックを行い、 'allIdx = find(B);'はBからのインデックスを使用するたびにこれらの行を繰り返さないようにします。これは何らかの形でモデル情報であることを暗示します。関数の終わりにスコープから外れてはいけません(たとえば、構造体を入出力として使用するなど)。 – patrik
thanx patrik、私はそれを持っています – Acobot
は、これはあなたに
A=[0.8 0.9 0.7 0.5 0.3 0.8 0.2 0.1];
B=[1 0 1 0 0 1 0 1 0 1 1 0 1 1];
C=find(A<0.6 & A>0.35);
temp=0;
for i=1:size(B,2)
temp=temp+B(i);
if(temp==C)
break;
end
end
locationB=i;
locationB
Bでのインデックスを取得する方法B(C)についてはどうですか? – drorco
iは1を得たが、私は**私はまだ 'A'と 'B'が接続されているどのような画像を得ることができないと、あなたはB = 8で**真の位置で何を意味しています場所 – Acobot
を見つけたいです。 'B 'には' 8'、 'A'には要素がありません。 – Crowley