Clear Filters
Clear Filters

Matrix distribution into two vectors that build similiar matrix as a vector product

2 views (last 30 days)
Hello,
i want to split up a matrix into two vectors. If i build the vector product of those vectors a similiar matrix compared to the original one should emerge. This should be an optimization problem, but i don't know where to start.
Furthermore the solution should not be an iterative one.
Thank you guys a lot!

Answers (1)

Torsten
Torsten on 26 Oct 2022
But you already got the answer for the two vectors a and b and the resulting approximating matrix C:
[u s v] = svd(M);
n = 1; % initially
a = n*u(:,1);
b = (s(1,1)/n)*v(:,1);
C = a*b'
  2 Comments
Henning Schmitz
Henning Schmitz on 26 Oct 2022
No this does not work unfortunately for a random matrix.
for example:
M2D = rand(4,4)
n = 5;
[u s v] = svd(M2D);
ax_test = n*u(:,1);
ay_test = (s(1,1)/n)*v(:,1);
M2D_test = ax_test*ay_test';
It just works (very good) if the matrix (M2D) is made as product of two vectors.
Torsten
Torsten on 26 Oct 2022
It's the best reconstruction for M2D that you can get from two vectors. You can't expect a perfect equality (M2D = a*b') since rank(a*b') = 1 whereas rank(M2D) = 4 usually.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!