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

1 view (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.

Categories

Find more on General Applications in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!