B も行列形式で配置します。次に例を示します。
B=[6 9; 32 4];
これを行うために使用できる MATLAB コードを次に示します。
k=0;
output=[];
for n=1:5
for m=1:2
if (sum(A(n,1:2)==B(m,:)) == 2)
k = k +1;
output(k) = n;
end
end
end
あなたの結果は にありoutput
ます。
編集:
行の説明を追加しています(sum(A(n,1:2)==B(m,:)) == 2)
。一つ一つ見ていきましょう。A(n, 1:2)
の n 番目の行の最初の 2 列である 1x2 ベクトルを返しますA
。B(m,:)
B には 2 つの列しかないため、 も 1x2 ベクトルです。[6 9]
では、 の最後の行からA
と[6 9]
の最初の行から があるとしましょうB
。
[6 9] == [6 9]
コマンドラインで試してください。結果は論理ベクトルです: [1 1]
. その理由は、==
要素ごとにベクトルを比較するためです。最初の 1 は 6 が 6 に等しいからで、2 番目は 9 が等しいからです。最初の要素が異なるため、試し[6 9] == [7 9]
てみると取得できます。[0 1]
したがって、両方の要素が同じかどうかを評価するには、==
演算子から得られるベクトルの合計が 2 に等しいと予想します。1 に等しい場合、1 つの要素だけが同じでした。ベクトル全体が等しいと言うには、2 である必要があります (ベクトルには 2 つの要素しかないため 2)。だからsum([6 9] == [6 9])
与えます2
がsum([7 9] == [6 9])
、与えるだけ1
です。
したがって、行が等しいかどうかをテストする条件は次のとおりです。if (sum(A(n,1:2)==B(m,:)) == 2)