-1

行列 A で線形独立ベクトルの最大サブセットを見つける matlab 関数を作成する必要があります。

プログラムの出力を 0 に初期化します。これは、空のセット (列ベクトルを含まない) に対応します。A の列を左から右に 1 つずつスキャンします。これまでに見つかった線形独立ベクトルのセットに現在の列ベクトルを追加すると、新しいベクトル セットが線形依存になる場合は、このベクトルをスキップします。それ以外の場合は、このベクトルを解セットに追加します。次の列に移動します。

function [ out ] = maxindependent(A) 
%MAXINDEPENDENT takes a matrix A and produces an array in which the columns 
%are a subset of independent vectors with maximum size. 
[r c]= size(A); 
out=0; 
A=A(:,rank(A)) 
for jj=1:c 
  M=[A A(:,jj)] 
  if rank(M)~=size(M,2) 
    A=A 
  elseif rank(M)==size(M,2) 
    A=M 
  end 
end 
out=A 

if max(out)==0 
 0; 
end 

end
4

1 に答える 1

0

行列内の線形独立ベクトルの数は行列のランクに等しく、線形独立ベクトルの特定のサブセットは一意ではありません。線形独立ベクトルの「最大サブセット」は、ランクと同じサイズになります。

MATLAB には、このための関数があります。

n = rank(A);

あなたが説明したアルゴリズムは必要ありません。SVD を使用する必要があります。ここでそれを行うための簡潔な方法があります: MATLAB で一連のベクトルを指定して、最大限に独立したベクトルを取得する方法は?

于 2013-03-07T02:29:24.623 に答える