2016-08-23 18 views
1

私は異なるサイズの2つのベクトルを比較しようとしています。私は以下のコードを実行するとき例えば:異なる長さのベクトルの比較

A = [1 4 3 7 9]; 
B = [1 2 3 4 5 6 7 8 9]; 

myPadded = [A zeros(1,4)]; 

C = ismember(myPadded,B) 

を私は次のような出力が得られます。

C = 1 1 1 1 1 0 0 0 0 

しかし、私は比較値の位置を反映する出力は、それゆえ、私は希望したいです次のように表示される出力:

C = 1 0 1 1 0 0 1 0 1 

、私はいくつかの助けを必要としてください:)

答えて

6

2点あります。まず、ismemberの入力を間違った順序で記述しています。さらに、マトリックスを成長させる必要もありません。単にismember(B, A)を試してみて、あなたが期待するものを得るでしょう。

5

ismember(B, myPadded):myPaddedのi番目の要素は、あなたが望む結果を得るだけのパラメータの順序を反転させるにはB.

に存在しているかどうかを示す、ベクトルにmyPaddedの同じサイズを返しますismember(myPadded, B)機能。

+0

誰かがここでひどい間違いを犯しました。これは完全に逆の直感的です。この比較を得たことのないすべての人にアイスクリームを返す:) – patrik

+0

私は特にそれを感じない。代わりにむしろ任意。しかし、それはコンソールに "help ismember"と書くのと同じくらい簡単です:-) – dunadar

+1

'ismember(B、A)'だけが必要だとコメントしようとしていましたが、@erfanは答えを投稿しました。 – user1543042

0

これを行う簡単な方法は、論理インデックスを使用することです。これは、Bの最後の桁がAに含まれている場合にのみ有効です。 Bは常にB = 1:Nになるように、N:

A = [1 4 3 7 9]; 
c(A) = 1; % or true. 

ここでの仮定は、あなたがベクトル1をサブインデックスにしたいということです。最後の桁が1でない場合、これは修正するのが簡単です。あなたが終わった後、元の状態に戻ることを忘れないでください。しかし、2行余分になります。

このソリューションは、非常に一般的な問題に取り組む特別なケースとして意味されています。

関連する問題