来自我之前的问题
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
我认为它适用于所有矩阵吗?