2014-04-01 42 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))' 

其產生相同的答案。