ベクトルの最初の要素が行列に存在するかどうかを確認する適切な方法は何ですか? たとえば、私が持っている場合
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')
インデックス位置を取得する
strfindMatlab でコマンドを使用してみました。
次のようなものを試すことができます:
res = strfind(B(:)',A)
これにより、B での A のすべての出現が得られます。したがって、最初の出現は次のようになります。res(1)
それが役に立てば幸い
行列内のベクトルのすべての要素を検索するには、次を使用できます。ABbsxfun
tmp = bsxfun( @eq, B(:), A );
この比較では、行列の形状は無視Bされ、要素のスタックとして扱われます。あなたの例Bには10要素があり、Aが2あるため、 の要素と等しいサイズのtmpバイナリ行列です。10x2trueBA
あなたの要素Bと等しい最初の要素を見つけるには、次のようにAします。
idx = find( any( tmp, 2 ), 1, 'first' );
線形インデックスidxを行と列のペアに変換するにはB
[r c] = ind2sub( size(B), idx );
乾杯!