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

📄 bitandpoweralloct2.m

📁 好东西
💻 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 + -