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

📄 untitled.m

📁 《基于平均功率受限和有约束条件注水原理的MIMO联合自适应调制和功率分配算法的主要源代码》
💻 M
字号:
《基于平均功率受限和有约束条件注水原理的MIMO联合自适应调制和功率分配算法的主要源代码》
%参数设置Pt:发射平均功率;BER:误比特率;nTx:发射天线数;nRx:接受
天线数;Gamma:信噪比门限;M:调制阶数
Pt=100;
BER=10e-4;
nTx=4;
nRx=4;
A=-1.5/log(5*BER)
Gamma=[0 0 0 0 0 0 0 0];
M=[2 4 8 16 32 64 128 256];
K=-log10(5*BER);
%计算信噪比门限值
for i=1:2:7
Gamma(i)=(5*M(i)-4)*K/6;
end
for i=2:2:8
Gamma(i)=1.5*(M(i)-1)*K;
enda
%循环进行100次平均功率受限自适应发射
for i1=1:100
lamda=[0 0 0 0];%初始化信道奇异值
P_Tx=[0 0 0 0];%初始化各天线发射功率
if i1==1
P_all(i1)=Pt;
end
%对信道状态矩阵作奇异值分解
H=(randn(nTx,nRx)+i*randn(nTx,nRx))/sqrt(2);
[U,S,V]=svd(H);
lamda(1)=S(1,1);
lamda(2)=S(2,2);
lamda(3)=S(3,3);
lamda(4)=S(4,4);
q(1)=1/(A*lamda(1));
q(2)=1/(A*lamda(2));
q(3)=1/(A*lamda(3));
q(4)=1/(A*lamda(4));
u=(P_all(i1)+q(1)+q(2)+q(3)+q(4))/4;
for i2=1:4
P_Tx(i2)=max(u-q(i2),0);
Gammak(i2)=lamda(i2)*P_Tx(i2);%计算每个发射信道的信噪比
%根据平均功率受限准则确定每天线的发射功率和调制方式
for i3=1:8
if i3==1
if(Gammak(i2)>Gamma(i3)/2)&(Gammak(i2)<Gamma(i3))
Gammaknew(i2)=Gamma(i3);
P_Tx(i2)=Gammaknew(i2)/lamda(i2);
if P_Tx(i2)>(Pt*1.5)/nTx
P_Tx(i2)=(Pt*1.5)/nTx;
end
M_Rx(i2)=M(i3);
elseif Gammak(i2)<=Gamma(i3)/2
Gammaknew(i2)=0;
P_Tx(i2)=0;
M_Rx(i2)=0;
end
elseif
((Gammak(i2)-Gamma(i3))<0)&((Gammak(i2)-Gamma(i3-1))>0)
if(Gammak(i2)-Gamma(i3-1))<=(Gamma(i3)-Gammak(i2))
Gammaknew(i2)=Gamma(i3-1);
P_Tx(i2)=Gammaknew(i2)/lamda(i2);
if P_Tx(i2)>(Pt*1.5)/nTx
P_Tx(i2)=(Pt*1.5)/nTx;
end
M_Rx(i2)=M(i3-1);
else
Gammaknew(i2)=Gamma(i3);
P_Tx(i2)=Gammaknew(i2)/lamda(i2);
if P_Tx(i2)>(Pt*1.5)/nTx
P_Tx(i2)=(Pt*1.5)/nTx;
end
M_Rx(i2)=M(i3);
endelse
if Gammak(i2)>Gamma(8)
Gammaknew(i2)=Gamma(8);
P_Tx(i2)=Gammaknew(i2)/lamda(i2);
if P_Tx(i2)>(Pt*1.5)/nTx
P_Tx(i2)=(Pt*1.5)/nTx;
end
M_Rx(i2)=M(i3);
end
end
end
end
P_temp(i1)=0
for i4=1:4
P_temp(i1)=P_temp(i1)+P_Tx(i4);
end
P_remain(i1)=Pt-P_temp(i1);
P_all(i1+1)=Pt+P_remain(i1);%计算下次发射可用的发射功率
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -