📄 图1-10.m
字号:
%%%以下计算的是Nr=4,8时的自适应发射功率分配的信道容量
SNR=sqrt(100000);
for Nr=[4 8];
C=zeros(1,20);
j=1;
for Nt=1:20
rongliang=zeros(1,200);
for n=1:200
H=(randn(Nr,Nt)+j*randn(Nr,Nt))/sqrt(2);
r=rank(H);
S=svd(H);
A=0;
for i=1:r
A=A+log2(1+SNR*max(S(i,1)/r,0));
end
rongliang(1,n)=A;
end
C(1,j)=sum(rongliang)/200;
j=j+1;
end
Nt=1:20;
plot(Nt,C,'-*');
hold on;
grid on;
axis([1,20,10,90]);
end
%%%%%%以下计算的是Nr=4,发射端不知道信道状态信息的信道容量
SNR=sqrt(100000);
C2=zeros(1,20);
g=1;
Nr=4;
for Nt=1:4 %发射天线的数
ronglian2=zeros(1,200);
m=min(Nt,Nr);
E=eye(m);
for n=1:200 %重复次数
H=(randn(Nt,Nr)+j*randn(Nt,Nr))/sqrt(2); %瑞利信道,零均值复高斯随机变量,方差为0.5
G=H*H';
A=det(E+SNR.*G./Nt);
ronglian2(1,n)=log2(A); %求容量
end
C2(1,g)=sum(ronglian2)/200; %求算术平均
g=g+1;
end
for Nt=5:20
rongliang3=zeros(1,200);
m=min(Nt,Nr);
E=eye(m);
for n=1:200
H=(randn(Nt,Nr)+j*randn(Nt,Nr))/sqrt(2);
G=H'*H;
A=det(E+SNR.*G./Nt);
ronglian3(1,n)=log2(A);
end
C2(1,g)=sum(ronglian3)/200;
g=g+1;
end
Nt=1:20;
plot(Nt,C2,'-.+');
hold on;
grid on;
axis([1,20,10,90]);
%%%以下计算的是Nr=8,发射端不知道信道状态信息的信道容量
SNR=sqrt(100000);
C3=zeros(1,20);
k=1;
Nr=8;
for Nt=1:8 %发射天线的数
rongliang4=zeros(1,200);
m=min(Nt,Nr);
E=eye(m);
for n=1:200 %重复次数
H=(randn(Nt,Nr)+j*randn(Nt,Nr))/sqrt(2); %瑞利信道,零均值复高斯随机变量,方差为0.5
G=H*H';
A=det(E+SNR.*G./Nt);
rongliang4(1,n)=log2(A); %求容量
end
C3(1,k)=sum(rongliang4)/200; %求算术平均
k=k+1;
end
for Nt=9:20
rongliang5=zeros(1,200);
m=min(Nt,Nr);
E=eye(m);
for n=1:200
H=(randn(Nt,Nr)+j*randn(Nt,Nr))/sqrt(2);
G=H'*H;
A=det(E+SNR.*G./Nt);
rongliang5(1,n)=log2(A);
end
C3(1,k)=sum(rongliang5)/200;
k=k+1;
end
Nt=1:20;
plot(Nt,C3,'-.+');
hold on;
grid on;
axis([1,20,10,90]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -