matrix and its transpose matrix
10 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I have:
clc;clear;close all;
N = 10;
SNRdB=0:2:20;
SNR = 10.^(SNRdB/10);
P=2;
B = 1000;
I = 3;
for j=1:length(N)
A = 0.5.*(randn(3,3, N) +(1i) * randn(3,3, N));
end
C = log2(det(I + (P/N)*(A*A')));
figure(1)
semilogy(SNRdB,C_eigen,'ro-','lineWidth',.5);
receive error:
Error using '
Transpose on ND array is not defined. Use PERMUTE instead.
Error in matrix33e (line 12)
C = log2(det(I + (P/N)*(A*A')));
Please help
Thanks
0 Kommentare
Antworten (1)
Walter Roberson
am 11 Nov. 2020
Bearbeitet: Walter Roberson
am 11 Nov. 2020
for j=1:length(N)
A = 0.5.*(randn(3,3, N) +(1i) * randn(3,3, N));
end
Why are you overwriting all of A in each loop iteration?
You are creating A as a 3 x 3 x 10 array each time.
C = log2(det(I + (P/N)*(A*A')));
Reminder: the * operator is only valid when one of the sides is a scalar, or both sides are either vectors or 2D arrays with the number of columns of the first operand being the same as the number of rows of the second operand. Your 3 x 3 x 10 array is not 2D so * cannot be used with it.
N = 10;
SNRdB=0:2:20;
[...]
semilogy(SNRdB,C_eigen,'ro-','lineWidth',.5);
I would suggest to you that you should not be assigning a constant N, and should instead be using
N = length(SNRdB);
I would further suggest to you that you should be using
for j=1:N
A = 0.5.*(randn(3,3) +(1i) * randn(3,3));
C = log2(det(I + (P/N)*(A*A')));
C_eigen(j) = something having to do with C
end
9 Kommentare
Siehe auch
Kategorien
Mehr zu Data Distribution Plots finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!