2

ベクトルの最初の要素が行列に存在するかどうかを確認する適切な方法は何ですか? たとえば、私が持っている場合

A = [1, 3] 

B = [ 1, 2 ; 
      1, 4 ; 
      2, 3 ; 
      2, 4 ; 
      3, 4 ];

この条件が満たされる行列 B のインデックスを返すものを取得する必要があります。だから私が得るべき例のために。

指標 = [1, 1]

MATLAB R2012a を使用しています

4

3 に答える 3

3

あなたが使用することができますismember:

vec=ismember(A,B);

また

vec=ismember(B,A)

あなたが熱狂的に望むものに依存します(Aの要素がBにある、またはその逆)。次に、次のことができます

[row col]=find(vec,1, 'first')

インデックス位置を取得する

于 2013-01-20T05:54:03.270 に答える
2

strfindMatlab でコマンドを使用してみました。

次のようなものを試すことができます:

res = strfind(B(:)',A)

これにより、B での A のすべての出現が得られます。したがって、最初の出現は次のようになります。res(1)

それが役に立てば幸い

于 2013-01-20T17:01:21.777 に答える
1

行列内のベクトルのすべての要素を検索するには、次を使用できます。ABbsxfun

tmp = bsxfun( @eq, B(:), A );

この比較では、行列の形状は無視Bされ、要素のスタックとして扱われます。あなたの例Bには10要素があり、A2あるため、 の要素と等しいサイズのtmpバイナリ行列です。10x2trueBA

あなたの要素Bと等しい最初要素を見つけるには、次のようにAします。

idx = find( any( tmp, 2 ), 1, 'first' );

線形インデックスidxを行と列のペアに変換するにはB

[r c] = ind2sub( size(B), idx );

乾杯!

于 2013-01-20T06:34:24.297 に答える