代码如下:
clc;
clear;
num=9999;
EbN0=0:10;
SNR=10.^(EbN0/10);
for i=1:num
for j=1:length(EbN0)
for k=1:3
if k==1
Mr=1;
Mt=1;
elseif k==2
Mr=2;
Mt=2;
elseif k==3
Mr=4;
Mt=4;
end
H=(randn(Mr,Mt)+1i*randn(Mr,Mt))/sqrt(2);
Hw=H*H';
C(i,j,k)=log2(real(det(eye(Mt)+SNR(j)*Hw/Mt)));
end
end
end
c=squeeze(sum(C,1))/num;
c_sort=sort(C,1);
c1=squeeze(c_sort(100,:,:));
c2=squeeze(c_sort(1000,:,:));
figure(1)
plot(EbN0,c(:,1),'g',EbN0,c(:,2),'r',EbN0,c(:,3),'b');
title('遍历容量');
legend('Nt=1,Nr=1','Nt=2,Nr=2','Nt=4,Nr=4');
xlabel('Eb/N0');
ylabel('bps/hz');
grid;
figure(2)
plot(EbN0,c1(:,1),'g',EbN0,c1(:,2),'r',EbN0,c1(:,3),'b');
title('中断概率为1%的中断容量');
legend('Nt=1,Nr=1','Nt=2,Nr=2','Nt=4,Nr=4');
xlabel('Eb/N0');
ylabel('bps/hz');
grid;
figure(3)
plot(EbN0,c2(:,1),'g',EbN0,c2(:,2),'r',EbN0,c2(:,3),'b')
title('中断概率为10%的中断容量');
legend('Nt=1,Nr=1','Nt=2,Nr=2','Nt=4,Nr=4');
xlabel('Eb/N0');
ylabel('bps/hz');
grid;
结果如下: