用matlab语言怎么将一个秩为1的矩阵分解成列向量和行向量相乘形式

问题描述:

用matlab语言怎么将一个秩为1的矩阵分解成列向量和行向量相乘形式

x=A(:,1);
y=A(1,:)/A(1);
x*y就是原来那个r=1的矩阵

楼上的方法是有明显缺陷的,比如对于 A=[0 0; 0 1] 就完全失效.
可以用SVD来做,[u,s,v]=svds(A,1),那么A=u*s*v'