📄 bitandpoweralloct2.m
字号:
% funcion:
% 功率和比特的预分配
%
function [poweralloctvector,Cbitvector,gamag]=bitandpoweralloct2(N_carrier,groupnumber,Hk,SNR,pe,N_ofdm)
% 初始化
K=groupnumber;
N=N_carrier;
%HHk=zeros(K,N_ofdm); % 每子信道组的平均信道响应
gamag=zeros(K,N_ofdm); % gama值
flag=zeros(K,N_ofdm); % 子信道组分配标志:0 不分配 1 分配
poweralloctvector=zeros(K,N_ofdm); % 子信道组分配功率
Cbitvector=zeros(K,N_ofdm); % 子信道组比特分配
An=1; % 放大倍数
pow=0; % 总功率
Saverage=1;
for i=1:N_ofdm
for k=1:K
gamag(k,i)=sum((abs(Hk((N/K)*(k-1)+1:(N/K)*k,i)).^2))/(N/K)*SNR;
end
end
aa=log(5*pe)*Saverage/1.5;
for i=1:N_ofdm
poweralloctvector1=zeros(K,1);
Cbitvector1=zeros(K,1);
sum1=0;
for p=1:1:K
sum1=sum1+1/gamag(p,i);%计算累计求和项
end
sumgam=sum1;
sum1=aa*K/(aa*sum1-K);
sumnew=sum1;
KK=K;
flag=zeros(1,K);
for p=1:K
if (1/gamag(p,i))>(aa*sum1-K)/(aa*KK)
flag(p)=1;
poweralloctvector1(p)=0;
Cbitvector1(p)=0;
sumgam=sumgam-1/gamag(p,i);
sumnew=aa*(KK-1)/(aa*sumgam-K);
KK=KK-1;
else
flag(p)=0;
end
end
for p=1:K
if flag(p)==0;
poweralloctvector1(p)=aa/gamag(p,i)-(aa*sumgam-K)/KK;%K/KK*Saverage*(1+log(5*pe)/(1.5*gamag(p,i))-sumnew*(log(5*pe)/1.5));
Cbitvector1(p)=log2(gamag(p,i)*sumgam/KK-1.5*gamag(p,i)/log(5*pe));
end
end
% right=gama_sum-1.6/log(5*Pe);
% right=1/right;
%
% % right2=0;
% % for p=1:1:K
% % right2=right2+(log(5*Pe)/log(2.7183))/(gamag(p,i)*(-1.6));
% % end
% % right2=right2/K;
% % right2=(log(5*Pe)/log(2.7183))/(1.6*(-1-right2));
Cbit=zeros(K,1);
% for q=1:1:K
% % if(gamag(q,i)<right|gamag(q,i)<right2)
% if(gamag(q,i)<right)
% Cbitvector1(q)=0;
% flag(q,i)=0;
% else
% flag(q,i)=1;
% sum1=gamag(q,i)*(gama_sum-1.6/log(5*Pe));
% Cbitvector1(q)=log2(sum1);
% end
% end
for s=1:1:K
% Cbitvector1(s)=4;
if(Cbitvector1(s)<1)
Cbit(s)=0;
end
% if(Cbitvector1(s)>=1 && Cbitvector1(s)<2)
% % if(Cbitvector1(s)>=1)
% Cbitvector1(s)=1;
% end
if(Cbitvector1(s)>=1 && Cbitvector1(s)<3)
% if(Cbitvector1(s)>=3)
Cbit(s)=2;
end
if(Cbitvector1(s)>=3 && Cbitvector1(s)<5)
Cbit(s)=4;
end
if(Cbitvector1(s)>=5)
Cbit(s)=6;
end
% % % %
% if(Cbitvector1(s)>=4.5)
% Cbitvector1(s)=4;
% end
end
Cbitvector(:,i)=Cbit;
poweralloctvector(:,i)=poweralloctvector1;
% right2=0;
% for p=1:1:K
% right2=right2+(log(5*Pe)/log(2.7183))/gamag(p,i)*(-1.6);
% end
%
% right2=right2/K;
% right2=(log(5*Pe)/log(2.7183))/(1.6*(-1-right2));
%
% poweralloctvector1=zeros(K,1);
%
% for t=1:1:K
% if(gamag(t,i)<right)
% poweralloctvector1(t)=0;
% % flag(t,i)=0;
% else
% % flag(t,i)=1;
%
%
% sumsum1=1+(log(5*Pe)/1.6)*(1/gamag(t,i)-gama_sum);
% poweralloctvector1(t)=Saverage*sumsum1;
% end
% end
% poweralloctvector1=poweralloctvector1*(N_carrier*Saverage)/(sum(poweralloctvector1)*(N/K));
% % pow=pow+sum(poweralloctvector1);
% % pow=pow/N_carrier;
% % poweralloctvector(:,i)=poweralloctvector1/pow;
% poweralloctvector(:,i)=poweralloctvector1;
% % An=poweralloctvector1;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -