从其SVD重建矩阵

时间:2014-04-02 09:27:40

标签: matlab matrix

来自我之前的问题

singular value decomposition and low rank tensorial approximation

我想使用循环重建原始矩阵,我尝试了以下方法,但是存在Dimension的问题

function B=reconstruct_matrix(X);
C=[];
[U E V]=svd(X);
n=rank(E);
for i=1:n
    C=C+(kron(U(:,1)',V(:,1))*E(1,1))';
end
B=C;
end

测试:

A=[2 1 3;4 6 -1]

A =

     2     1     3
     4     6    -1



reconstruct_matrix(A)
Error using  + 
Matrix dimensions must agree.

Error in reconstruct_matrix (line 6)
    C=C+(kron(U(:,1)',V(:,1))*E(1,1))';

请帮我解决这个问题

更新:

我已将代码更改为

function B=reconstruct_matrix(X);
[M,N]=size(X);
C=zeros(M,N);
[U E V]=svd(X);
n=rank(E);
for i=1:n
    C=C+(kron(U(:,i)',V(:,i))*E(i,i))';
end
B=C;
end

得到了结果:

reconstruct_matrix(A)

ans =

2.0000    1.0000    3.0000
4.0000    6.0000   -1.0000

我认为它适用于所有矩阵吗?

0 个答案:

没有答案