⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 图1-10.m

📁 我自己在学习空时编码一书时编写的第一章的仿真程序
💻 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 + -