Decompose an N-dimensional array into outer products

6 Ansichten (letzte 30 Tage)
Matt J
Matt J am 16 Jan. 2019
Kommentiert: Christine Tobler am 21 Jan. 2019
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

Akzeptierte Antwort

Christine Tobler
Christine Tobler am 17 Jan. 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 Kommentare
Matt J
Matt J am 18 Jan. 2019
Thanks, Christine. I guess there are no stock Matlab commands to compute these decompositions?
Christine Tobler
Christine Tobler am 21 Jan. 2019
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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Linear Algebra finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by