2012-10-01 7 views
5

私は常に10行ではなく、さまざまな数の列を持つmatlabのバイナリ行列を生成するシミュレーションコードを持っています。ここで例えば行列の行のペアごとの比較

私は最終的に間の差の数と10×10の対称行列を作成するために、2行の間に異なっているどのように多くの要素を決定するために行の間のペアごとの比較ですがやりたい
1  0  0  0 
0  0  0  0 
0  1  0  0 
1  0  0  0 
1  0  0  0 
1  0  1  0 
0  0  0  1 
1  0  0  0 
0  0  0  0 
0  0  0  0 

行。例えば。行1は行2と比較されます。

この行列の(1,2)要素(2,1要素)は行1と行2を比較し、この場合は1つだけの違いがあるため1になります。

これはループコーディングがたくさんあることがわかっていますが、私が知り得ない単純な方法があると感じています。

これはどのように達成する必要がありますか?どのなし

答えて

4

を行うことができます見て:それは何と言うことはa = 1 IFF bとは異なる、およびb = 0、またはA = 0及びB = 1であるということである

A=[1 0 1; 0 1 1; 1 1 1 ; 0 0 0]; 
A*(1-A)'+(1-A)*A' 
ans = 
0  2  1  2 
2  0  1  2 
1  1  0  3 
2  2  3  0 

、 等価ですa *(1-b)+ b *(1-a)に変換する。

結果行列の各エントリは、行(i、j)間の差の数を保持します。行列の乗算を実行することにより、任意の行の対のすべての項目について上記を計算し、結果を合計します。

+0

+1非常にいい:) – angainor

関連する問題