Domanda

according this article

http://www.wseas.us/e-library/conferences/2012/Vouliagmeni/MMAS/MMAS-07.pdf

matrix can be approximated by one rank matrices using tensorial approximation,i know that in matlab kronecker product plays same role as tensorial product,function is kron,now let us suppose that we have following matrix

a=[2 1 3;4 3 5]

a =

     2     1     3
     4     3     5

SVD of this matrix is

[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

please help me to implement algorithm with using tensorial approximation reconstructs original matrix in matlab languages,how can i apply tensorial product?like this

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

or?thanks in advance

È stato utile?

Soluzione

I'm not quite sure about the Tensorial interpretation but the closest rank-1 approximation to the matrix is essentially the outer-product of the two dominant singular vectors amplified by the singular value.

In simple words, if [U E V] = svd(X), then the closest rank-1 approximation to X is the outer-product of the first singular vectors multiplied by the first singular value.

In MATLAB, you could do this as:

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

Which yields:

ans =

    2.0752    1.4487    2.7017
    3.9606    2.7649    5.1563

Also, mathematically speaking, the kronecker product of a row vector and a column vector is essentially their outer product. So, you could do the same thing using Kronecker products as:

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

Which yields the same answer.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top