2017-06-19 70 views
1

的第一列我有大小4x7的二進制矩陣A。我想創建一個Matlab函數,確定該矩陣的前四列是線性無關的,如果不置換找到前四線性無關列和其他三列將隨之而來。四個線性獨立的二進制矩陣

例如:如果前三列和第五列是線性無關的,則新矩陣將給出第一列,第二列,第三列和第五列,最後三列將是第四列,第六列和第七列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的前三列是線性無關的,第五colomn是前三colomns的線性獨立的。 我們發現

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

如果A4x7你可以找到以下解決方案:

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

您code.But首先感謝如果矩陣A的四列是獨立的函數必須返回相同的矩陣A.和列的置換爲具有四個獨立的列可ordered.If 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]你程序返回結果= [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的前四列已經線性獨立的。 – 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 0 1 1 1 1]交換列4和5(因爲A的前四列是相關的)以給出新的矩陣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],並且如果A的四個第一列是獨立的,則程序正確返回矩陣A. – m2016b

+0

如果你看到'perms'的結果,它是由有序排列開始的,如[1 2 3 4 5 6 7]。 – OmG