gusucode.com > m4k20功率分配图 mimo功率优化,OFDM典型仿真程序,贪婪算法仿真程序 > code/15883844m4k20power/m4k20功率分配图xin/optimal_pow_alloc.m

    %输入参数:aa,K,其中aa为信道状态信息,是信道增益模值的平方除以噪声功率,是行向量,维数为K
%K为子信道个数
%输出:各个子信道上应分配的功率,也是一个1xK的行向量,与信道状态信息是对应的
function power_alloc=optimal_pow_alloc(aa,K)
M=4;
a=2*(sqrt(M)-1)/(sqrt(M)*log2(sqrt(M)));
b=3/(M-1);
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)