matlab SVD问题

时间:2014-02-11 03:53:00

标签: matlab svd

我有以下Matlab代码:

r=5;
[U, Gamma, V] = svd( rand(20,10), 'econ' );

L1 = U(:,1:r) * Gamma(1:r,1:r) * V(:,1:r)';

L2 = zeros(20,10); 
for i=1:r
    L2 = L2 + Gamma(i)* U(:,i) * V(:,i)';
end

norm(L1-L2,'fro')

通常,L1应与L2相同,norm(L1-L2,'fro')应该为零。但是,当我在Matlab命令窗口中键入上述命令时,情况并非如此。

有人可以帮我在这里找出问题吗?

1 个答案:

答案 0 :(得分:2)

应该是

L2 = L2 + Gamma(i,i)* U(:,i) * V(:,i)';