2017-06-19 7 views
0

私はいくつかの問題を抱えていますが、次の手順を実行できるMATLABプログラムを作成したいので、誰かが私を助けてくれたらとても感謝しています。最も信頼できる基準を見つける方法バイナリマトリックスでは?

Aの最初の列から始めて、最大の関連する信頼性値を持つ最初のK個の線形独立列を見つけます。そして、これらのK個の線形独立列は、新しい行列Bの最初のK列として使用され、その信頼性の順序が維持される。 Bの残りの(N-K)列も、信頼性の低い順に配置されます。

例:

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列は線形独立であり、第5列は、最初の3列の線形独立です。

我々は見つける:

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] 
+0

あなたが "_largest関連した信頼性のvalues_" とは何を意味するのですか? – m7913d

+0

行列Aの列は信頼性の値に従って分類されます。つまり、最初の列は2番目の列よりも信頼性が高く、2番目の列は3番目の列より信頼性が高くなります。 – m2016b

答えて

1

あなたは次のように列が線形独立であるかどうかを判断するためにrankを使用することができます。

K = size(A, 1); % the number of linearly independent columns to find 
B = zeros(size(A)); % preallocate output for efficiency 
colB = 1; % column index for the next linearly independent column 
colBafter = K + 1; % column index for the next linearly dependent column 

for i=1:size(A, 2) % loop over all columns in A 
    B(:, colB) = A(:, i); % add the next column of A as an independent column to B 
    if rank(B(:, 1:colB)) == colB % check if the newly added column is indeed linearly independent 
    if colB == K % check if all independent columns are found 
     break; 
    else 
     colB = colB + 1; % increase the independent index as the added column was indeed linearly independent 
    end 
    else 
    B(:, colBafter) = A(:, i); % add the column as a dependent column to B 
    colBafter = colBafter + 1; % increase the dependent index as the added column was linearly dependent 
    end 
end 

B(:, colBafter:end) = A(:, i+1:end); % copy the rest of A to B 
+0

ありがとう@ m7913d!それはまさに私が探していたものです。 – m2016b

関連する問題