How can I get the same results between matlab svd and simulink svd?

2 views (last 30 days)
Hi,
I've got a trouble with svd in simulink. Svd returns U S V, such that A= U S V'. The matrix U in the simulink svd, is different between U of the matlab svd (not only for the sign).
Why there is that difference?
How can i get the matrix U of the matlab svd from the U of simulink svd?

Answers (1)

Jan
Jan on 13 Jan 2013
From a numerical point of view, the reply of an SVD has to reply U, S and V such, that U*S*V' = A within certain rounding limits. In consequence different algorithms or order of executions will lead to different results, which are all "correct".
Now look at the differences of the results:
U_matlab - U_simulink
S_matlab - S_simulink
V_matlab - V_simulink
A - (U_matlab * S_matlab * V_matlab')
A - (U_simulink* S_simulink* V_simulink')
What do you observe?
  7 Comments
Jan
Jan on 14 Jan 2013
Edited: Jan on 14 Jan 2013
So your actual question is, that the SVD of Simulink is flawed? Or does this mean, that the substace tracking cannot handle a [m x n] matrix properly, e.g. because a length command is used instead of a size(x, 1)?
I still have no clue what you are talking about. I really want to help, but I can't.
max
max on 14 Jan 2013
I understand. In effect, what happens is strange. Simulink svd is not flawed, but is different from matlab. I don't know why, but the U matrix of simulink doesn't work good if I use it in my algorithm. Now I'm trying to write the svd code in a embedded matlab function, but is not easy for me. Svd function in matlab can't be edit, it's a build function, so I can't know the code.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!