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

2 ビュー (過去 30 日間)
max
max 2013 年 1 月 13 日
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?

回答 (1 件)

Jan
Jan 2013 年 1 月 13 日
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 件のコメント
Jan
Jan 2013 年 1 月 14 日
編集済み: Jan 2013 年 1 月 14 日
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 2013 年 1 月 14 日
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.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by