如果给我一组向量(它们可以作为矩阵的列向量提供),并且我想获得最大独立向量,那么最好的方法是什么?
我可以一次向结果集中添加一个向量,看看新形成的矩阵的秩是否增加。但我感觉效率不是很高。当然,我可以回去做高斯消元法来解决这个问题。但我只是想知道是否有更好的(高效且数值稳定且鲁棒的)方法来解决这个问题。
Thanks.
Edit
通过观察排名的增加感觉加法可能是无效的。我们可以通过观察排名是否下降来进行删除。
这段代码就能解决问题。因为长大所以有点脏rInd
即时执行,这不是最有效的,但这个想法更重要。它使用 QR 分解,基本上是 Gram-Schmidt 正交化。由此,它遍历 r 的行,直到找到下一个向量A
这增加了一些与当前已知的基础线性无关的东西。
iUnderConsideration = 1;
[q,r] = qr(A);
rInd = [];
for j = 1:size(r,2),
if(r(iUnderConsideration,j) ~= 0)
rInd = [rInd r(:,j)];
iUnderConsideration = iUnderConsideration + 1;
end
if(iUnderConsideration > size(r,1))
break;
end
end
q*rInd %here's your answer
作为旁注,此代码将选择矩阵的向量A
而不改变它们。svd
不会直接给你这些。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)