how to random initialize svd function in matlab??
1 回表示 (過去 30 日間)
古いコメントを表示
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
0 件のコメント
採用された回答
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.
0 件のコメント
その他の回答 (1 件)
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
>>
参考
カテゴリ
Help Center および File Exchange で Eigenvalues についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!