ベクトルの最初の要素が行列に存在するかどうかを確認する適切な方法は何ですか? たとえば、私が持っている場合
A = [1, 3]
と
B = [ 1, 2 ;
1, 4 ;
2, 3 ;
2, 4 ;
3, 4 ];
この条件が満たされる行列 B のインデックスを返すものを取得する必要があります。だから私が得るべき例のために。
指標 = [1, 1]
MATLAB R2012a を使用しています
あなたが使用することができますismember
:
vec=ismember(A,B);
また
vec=ismember(B,A)
あなたが熱狂的に望むものに依存します(Aの要素がBにある、またはその逆)。次に、次のことができます
[row col]=find(vec,1, 'first')
インデックス位置を取得する
strfind
Matlab でコマンドを使用してみました。
次のようなものを試すことができます:
res = strfind(B(:)',A)
これにより、B での A のすべての出現が得られます。したがって、最初の出現は次のようになります。res(1)
それが役に立てば幸い
行列内のベクトルのすべての要素を検索するには、次を使用できます。A
B
bsxfun
tmp = bsxfun( @eq, B(:), A );
この比較では、行列の形状は無視B
され、要素のスタックとして扱われます。あなたの例B
には10
要素があり、A
が2
あるため、 の要素と等しいサイズのtmp
バイナリ行列です。10x2
true
B
A
あなたの要素B
と等しい最初の要素を見つけるには、次のようにA
します。
idx = find( any( tmp, 2 ), 1, 'first' );
線形インデックスidx
を行と列のペアに変換するにはB
[r c] = ind2sub( size(B), idx );
乾杯!