您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页NATLAB程序代码注水算法

NATLAB程序代码注水算法

来源:爱go旅游网
遍历容量仿真程序代码

clear

j=sqrt(-1);%平方根函数即虚数iMr=[1246];Mt=[1246];

LRT=length(Mr);%取Mr的长度SNR=0:20;%信噪比范围0~20Lsnr=length(SNR);%SNR的长度testnum=2^(12);

forln=1:LRT;%for循环范围1到LRT

mR=Mr(ln);%接收天线数量.mT=Mt(ln);%发送天线数量.

Forlm=1:Lsnr;

snr=10^(SNR(lm)/10);forll=1:testnum,

H_matrix=(randn(mT,mR)+j*randn(mT,mR))/sqrt(2);%H复矩阵

%randn产生标准正态矩阵

M_Channl=H_matrix*H_matrix';%信道是H与H的转置相乘[Vect,D]=eig(M_Channl);%求M的全部特征值构成VECT,M

%的特征向量构成D的列向量

F_matrix=eye(size(D))+snr*D./mT;%size()获取矩阵的行数和列%数eye()主对角线为1其他为0的矩阵

G_mt(ll)=sum(log2(diag(F_matrix)));end

C_mt(ln,lm)=sum(G_mt)/testnum;endend

Q(1,:)=C_mt(3,:);savecapacityQ;

figure(1);%产生一副图片

plot(SNR,C_mt(1,:),'k-*','LineWidth',2);holdon;%不覆盖原图

plot(SNR,C_mt(2,:),'k-p','LineWidth',2);

plot(SNR,C_mt(3,:),'k-h','LineWidth',2);plot(SNR,C_mt(4,:),'k-v','LineWidth',2);

xlabel('信噪比\\rho(dB)','FontSize',14);%横坐标字体14ylabel('遍历容量C(bit/s/Hz)','FontSize',14);

legend('N_T=N_R=1','N_T=N_R=2','N_T=N_R=4','N_T=N_R=6');holdoff

发送端已知信道参数仿真程序代码

clear

M=4;j=sqrt(-1);

testnum=2^(12);SNR=0:20;

Lsnr=length(SNR);fornl=1:Lsnr;

snr=10^(SNR(nl)/10);forK=1:testnum,

T=randn(M,M)+j*randn(M,M);

T=T/sqrt(2);I=eye(M);

eigen=eig(T*T');%extracteigenvaluesgamma=zeros(M,1);gamma=watfill(snr,T,M);

a=I+(snr/M)*diag(gamma).*diag(eigen);a=det(a);

y(K)=log2(a);end

a_var(nl)=sum(y)/testnum;end

loadcapacityQ;

b_var=Q;figure(1);

plot(SNR,b_var,'k-','LineWidth',2);holdon;

plot(SNR,a_var,'k-*','LineWidth',2);grid

xlabel('信噪比\\rho(dB)','FontSize',14');ylabel('遍历性容量[bit/s/Hz]','FontSize',14);legend('unknown','known');axis([020,030]);holdoff

注水算法子函数:

function[y_outU_out]=watfill(snr,H,M)

[UHeigvalue]=eig(H);

[eigenDxD]=sort(diag(-eigvalue));

eigen=-eigenD;

forrn=1:M;

ifabs(eigen(rn))<=0.001;

rx(rn)=

0.0;

elserx(rn)=end

eigen(rn);

end

R_matrix=diag(rx);UH=UH(:,xD);r=rank(R_matrix);rou=M/snr;formk=1:r;

consta=rx(mk);p=1;

temp2=0.0;

fornk=1:r-p+1,

constb=rx(nk);

ifconstb~=0.0;

temp1=1/constb;

temp2=temp2+temp1;temp1=0.0;else

temp1=0.0;

temp2=temp2+temp1;end

ifr-p+1~=0,

const=mRT/(r-p+1);

mu=const*(1+temp2/snr);else

mu=0;endend

constc=mu-rou/consta;

ifconstc<0

constc=0;

p=p+1;mu=0;else

mu=0;

end

gamma(mk)=constc;end

LG=length(gamma);

y_out=[gammazeros(1,M-LG)];U_out=UH;

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igat.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务