📄 optimal_pow_alloc.asv
字号:
%输入参数:aa为信道状态信息,是信道增益模值的平方除以噪声功率,是行向量,维数为K
%K为子信道个数,M为调制阶数(你主要以什么调制为主就用哪个,譬如16QAM,那么M=16)
function power_alloc=optimal_pow_alloc(aa,K,M)
M=4;
a=2*(sqrt(M)-1)/(sqrt(M)*log2(sqrt(M)));
b=3/(M-1);
K=size(aa)
Pmax=K;
p=Pmax/K*ones(1,K);
i=1;
u(1)=50;%一次迭代的步进为u
flag=1;
while flag==1
zero_flag=0;
for k=1:K
uu(k)=1/K*diffunct(aa,p,k,a,b)+lamda_update(aa,p,k,a,b,K);
p(k)=p(k)-u(i)*(1/K*diffunct(aa,p,k,a,b)+lamda_update(aa,p,k,a,b,K));
if p(k)<=0
zero_flag=1;
end
end
if abs(uu(k))<1.0e-10;%迭代的精度为1e-10
break;
end
if zero_flag==1
i=i+1;
u(i)=i*u(1);
else
i=i+1;
u(i)=u(1);
end
end
sum(p);
power_alloc=Pmax/sum(p).*p;
%stem(power_alloc)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -