-1

我需要创建一个 matlab 函数,该函数在矩阵 A 中找到最大的线性独立向量子集。

将程序的输出初始化为0,对应于空集(不包含列向量)。从左到右一一扫描A的列;如果将当前列向量添加到目前找到的线性独立向量集使新的向量集线性相关,则跳过该向量,否则将该向量添加到解集;并移至下一列。

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 回答