matrix and its transpose matrix
12 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Risposte (1)
Walter Roberson
il 11 Nov 2020
Modificato: Walter Roberson
il 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 Commenti
Vedere anche
Categorie
Scopri di più su Data Distribution Plots in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!