how to random initialize svd function in matlab??

1 回表示 (過去 30 日間)
Fethi Bencherki
Fethi Bencherki 2020 年 3 月 5 日
回答済み: Christine Tobler 2020 年 3 月 5 日
i want the svd function in matlab to give me two different values for the same matrix , i mean the U and V , currently im getting the same everytime i run

採用された回答

Christine Tobler
Christine Tobler 2020 年 3 月 5 日
The linear algebra functions in MATLAB are run-to-run reproducible, meaning if you call them twice with the exact same input, you get the exact same output.
If you want to randomize the output, you could pre-multiply the matrix with two random orthogonal matrices, and then apply does matrices to the outputs U and V:
[m, n] = size(A);
U0 = orth(randn(m));
V0 = orth(randn(n));
[U, S, V] = svd(U0*A*V0');
U = U0'*U;
V = V0'*V;
norm(A - U*S*V', 'fro')
This will still return the same singular values (which are unique), but returns different singular vectors.

その他の回答 (1 件)

KALYAN ACHARJYA
KALYAN ACHARJYA 2020 年 3 月 5 日
data_test=magic(3);
[U,S,V]=svd(data_test)
Result
U =
-0.5774 0.7071 0.4082
-0.5774 0.0000 -0.8165
-0.5774 -0.7071 0.4082
S =
15.0000 0 0
0 6.9282 0
0 0 3.4641
V =
-0.5774 0.4082 0.7071
-0.5774 -0.8165 -0.0000
-0.5774 0.4082 -0.7071
>>
  1 件のコメント
Fethi Bencherki
Fethi Bencherki 2020 年 3 月 5 日
編集済み: Fethi Bencherki 2020 年 3 月 5 日
i might have formulated the question in a wrong manner , see normally svd is non unique , but due to some reason svd(A) is outputing the same results , i want it instead to give me different U, V everytime i run , for the same matrix A ofcourse

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

カテゴリ

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

Community Treasure Hunt

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

Start Hunting!

Translated by