2014-04-01 74 views
0

,我知道在Matlab克罗内克积扮演张量的产品,功能相同的作用是KRON,现在让我们假设,我们有以下矩阵奇异值分解和低秩张量近似

a=[2 1 3;4 3 5] 

a = 

    2  1  3 
    4  3  5 

这个矩阵的SVD是

[U E V]=svd(a) 

U = 

    -0.4641 -0.8858 
    -0.8858 0.4641 


E = 

    7.9764   0   0 
     0 0.6142   0 


V = 

    -0.5606 0.1382 -0.8165 
    -0.3913 0.8247 0.4082 
    -0.7298 -0.5484 0.4082 

请帮我实现的算法使用近似张量重建在MATLAB语言的原始矩阵,如何申请张量的产品?这样

X=kron(U(:,1),V(:,1)); 

或?在此先感谢

+0

如果您只想做2阶张量,您只需要外部产品。 – Memming

+0

非常感谢 –

回答

2

我不是对Tensorial解释很肯定,但矩阵的最接近的1级近似本质上是由奇异值放大的两个主要奇异向量的外积。

在简单的话,如果[U E V] = svd(X),则最接近秩1近似X是第一奇异向量乘以第一奇异值的外产物。

在MATLAB中,你可以这样做的:

U(:,1)*E(1,1)*V(:,1)' 

其中产量:

ans = 

    2.0752 1.4487 2.7017 
    3.9606 2.7649 5.1563 

而且,从数学上讲,行向量的Kronecker积和列向量基本上是它们的外部产品所以,你可以做使用克罗内克产品为同一件事:

(kron(U(:,1)',V(:,1))*E(1,1))' 

其产生相同的答案。