Decompose an N-dimensional array into outer products

The SVD gives us a way to decompose a square matrix A into a sum of outer products with a minimal number of terms. In other words, given
[U,S,V]=svd(A);
V=S*V;
I can reconstruct A as follows,
A=0;
for i=1:length(A)
A=A+U(:,i)*V(i,:);
end
My quesion is, is there an analog of this decomposition in N-dimensions. For a 3D array, for example, can we find a minimal decomposition into triple outer products,
A=0;
for i=1:?
A=A+U(:,i)*V(i,:)*reshape( W(:,i) 1,1,[] );
end

 Respuesta aceptada

Christine Tobler
Christine Tobler el 17 de En. de 2019
Your last formula corresponds to the CP (canonical-polyadic) tensor decomposition. This is in a way the equivalent of the SVD for matrices, but its numerical properties aren't as nice: There is no direct way to compute it, and iterative methods often have a tendency to get stuck in local minima.
Another generalization of the SVD to tensors is the HOSVD (higher-order SVD), which consists of orthogonal matrices U, V, and W, and a core tensor K. This tensor is not diagonal like the matrix S in the SVD, but all the slices K(:, :, i) have decreasing Frobenius norm (same for K(:, i, :) and K(i, :, :)). This can be computed directly by applying the SVD to reshaped versions of the input tensor.

2 comentarios

Matt J
Matt J el 18 de En. de 2019
Thanks, Christine. I guess there are no stock Matlab commands to compute these decompositions?
No stock commands in MATLAB, no. There are several MATLAB toolboxes (not written by MathWorks) available online, for example:
I have used the Tensor Toolbox several years ago, but haven't tried Tensorlab myself. Both provide methods for computing the two decompositions I mentioned above.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Linear Algebra en Centro de ayuda y File Exchange.

Preguntada:

el 16 de En. de 2019

Comentada:

el 21 de En. de 2019

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by