generate multi Diagonal matrices
2 views (last 30 days)
Show older comments
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 Comments
Answers (2)
Setsuna Yuuki.
on 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 Comments
Christine Tobler
on 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 Comments
See Also
Categories
Find more on Linear Algebra in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!