2017-06-19 9 views
1

私はサイズが4x7の2進行列Aを持っています。 Matlab関数を作成して、行列の最初の4つの列が最初の4つの直線的に独立した列を見つけることができず、他の3つの列が続く場合、直線的に独立しているかどうかを判断します。2つの行列から線形独立した4つの第1の列

たとえば、最初の3つの列と5番目の列が線形独立の場合、新しい行列は1番目、2番目、3番目および5番目の列を与え、最後の3つの列は4番目、6番目および7番目の列になります。 A.

例:

A = [1 0 0 1 0 0 1 1;0 1 0 1 1 0 0 1;0 0 1 1 1 0 1 0;0 0 0 0 1 1 1 1]; 

Aの最初の3列は線形独立であり、第colomn最初の3つcolomnsの直線的に独立しています。 Aでは、次の中で解決策を見つけることができます4x7であれば、我々は

B = [1 0 0 0 1 0 1 1;0 1 0 1 1 0 0 1;0 0 1 1 1 0 1 0;0 0 0 1 0 1 1 1]; 

答えて

1

を見つける:あなたのcode.Butため

A = randi(1, 4, 7); // replace real A here 
    p = perms(1:7); 
    for i = 1:length(p) 
     newA = A(:,p(i,:)); 
     if(rank(A(:,1:4)) == 4) 
      break; 
     end 
    end 
    result = newA; 
+0

まず感謝を行列Aの4つの列は、関数が返す必要があり独立している場合同じ行列A。そして、4つの独立した列を順序付けるために列の並べ替え。A = [1 0 0 1 1 0 0; 0 0 0 1 0 1 1; 0 0 1 0 1 0 1; 0 1 0 1 1 0 1]あなたはreturn result = [0 0 1 1 0 0 1; 1 1 0 1 0 0 0; 1 0 1 0 1 0 0; 1 0 1 1 0 1 0]、Aの最初の4つの列は既に線形独立であった。 – m2016b

+0

私が望む行列A = [1 0 0 1 0 0 1 1; 0 1 0 1 1 0 0 1; 0 0 1 1 1 0 1 0; 0 0 0 1 1 1 1 1]ならば、プログラムは列Aと列Bとを交換するために、新しい行列B = [1 0 0 0 1 0 1 1; 0 1 0 1 1 0 0 1; 0 0 1 1 1 0 1 0を与えるために(列Aの最初の4つの列が依存するので) ; 0 0 0 1 0 1 1 1] Aの4つの最初の列が独立している場合、プログラムは行列Aを返します。 – m2016b

+0

'perms'の結果を見ると、[1 2 3 4 5 6 7]。 – OmG

関連する問題