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!