generate multi Diagonal matrices
7 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I need help. I have beable to generate 100 of random matrices H. then try to get S diagonal matrix but it is not succesful as both s11=0, s22=0, however s33 value is correct.
N = 100;
for j=1:length(N)
H = 0.5.*(randn(3,3, N) +(1i) * randn(3,3, N));
for k=1:length(H)
[S(3,3,k)]= svd(H(3,3,k));
%[U(3,3,k),S(3,3,k),V(3,3,k)]= svd(matrices(3,3,k));
end
end
H(:,:,92) =
-0.3382 + 0.3345i 0.1304 + 0.0842i -0.4230 + 0.3986i
0.0729 - 0.5495i -0.3290 - 0.2820i -0.2131 - 0.1437i
0.3096 + 0.0466i 0.0022 - 0.3723i -0.2904 - 0.0265i
S(:,:,92) =
0 0 0
0 0 0
0 0 0.2916
Please advise
Thanks
0 commentaires
Réponses (2)
Setsuna Yuuki.
le 10 Nov 2020
In your code, you are only calculating the svd of the column 3 and row 3.
N = 100;
for j=1:length(N)
H = 0.5.*(randn(3,3, N) +(1i) * randn(3,3, N));
for k=1:length(H)
[S(1,1,k)]= svd(H(1,1,k)); % row 1 column 1
[S(2,2,k)]= svd(H(2,2,k)); % row 2 column 2
[S(3,3,k)]= svd(H(3,3,k)); % row 3 column 3
%[U(3,3,k),S(3,3,k),V(3,3,k)]= svd(matrices(3,3,k));
end
end
2 commentaires
Christine Tobler
le 10 Nov 2020
The SVD is usually computed for a matrix, but you're only passing in a scalar on each call.
Is it possible you meant to pass in a page H(:, :, k) (which would be a 3-by-3 matrix) in every iteration?
0 commentaires
Voir également
Catégories
En savoir plus sur Operating on Diagonal Matrices dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!