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

📄 bitandpoweralloct2fenpei.m

📁 好东西
💻 M
字号:
function [poweralloctvectorold,Cbitvectorold,poweralloctvectornew,Cbitvectornew]=bitandpoweralloct2fenpei(N_carrier,groupnumber,Hk,SNR,Pe,N_ofdm)
K=groupnumber;
N=N_carrier;
HHk=zeros(K,N_ofdm);
gamag=zeros(K,N_ofdm);
flag=zeros(K,N_ofdm);
poweralloctvector=zeros(K,N_ofdm);
Cbitvector=zeros(K,N_ofdm);

Cbitvectorold=zeros(K,N_ofdm);
    Cbitvectornew=zeros(K,N_ofdm);
poweralloctvectornew=zeros(K,N_ofdm);
    poweralloctvectorold=zeros(K,N_ofdm);
An=1;
pow=0;
for i=1:N_ofdm
  
    for k=1:K
%         xxx=(N/K)*(k-1)+1
%         yyy=(N/K)*k
%         i=i
%         zzz=(N/K)
%         aaaaaa=size(Hk)
        HHk(k,i)=sum(Hk((N/K)*(k-1)+1:(N/K)*k,i))/(N/K);      %将N/K内的子载波信道响应求平均
%         gamag(k,i)=(abs(HHk(k,i))).^2*10^log10(SNR); 
% 
%     gamag(k,i)=An^2*(abs(HHk(k,i))).^2*SNR; 
    gamag(k,i)=(abs(HHk(k,i))).^2*SNR; 

    end
end

for i=1:N_ofdm
    right=0;   
    for p=1:1:K
        right=right+1/gamag(p,i);
    end
    
    right=right/K;
    right=right-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));

    Cbitvector1=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=0;
            for r=1:1:K
                sum1=sum1+gamag(q,i)/gamag(r,i);
            end
            sum1=sum1/K;
            sum1=sum1-(1.6*gamag(q,i))/log(5*Pe);
            sum1=log(sum1)/log(2);
            Cbitvector1(q)=sum1;
        end
    end
    ssss=zeros(4,1);
    

    for s=1:1:K
%            Cbitvector1(s)=4;


%          yyyyyyyyyyyyyyyyyyyyyyyy=Cbitvector1
        if(Cbitvector1(s)<=1)
            Cbitvector1(s)=0;
            flag1(s)=0;
            ssss(1)=ssss(1)+1;
        end
        
%         if(Cbitvector1(s)>=1 && Cbitvector1(s)<2)
% %           if(Cbitvector1(s)>=1)
%             Cbitvector1(s)=1;
%         end

        if(Cbitvector1(s)>1 && Cbitvector1(s)<4.5)
%         if(Cbitvector1(s)>=3)
            Cbitvector1(s)=2;
            flag1(s)=2;
           ssss(2)=ssss(2)+1;
        end
        
%         s=s
%         aaaaaaaaaaaa=Cbitvector1
        
         if(Cbitvector1(s)>=4.5 && Cbitvector1(s)<6.5)
            Cbitvector1(s)=4;
            flag1(s)=4;
            ssss(3)=ssss(3)+1;
        end
        if(Cbitvector1(s)>=6.5)
            Cbitvector1(s)=6;
            flag1(s)=6;
            ssss(4)=ssss(4)+1;
        end
% % % %     
%         if(Cbitvector1(s)>=4.5)
%             Cbitvector1(s)=4;
%         end
    end    
    
Cbitvector(:,i)=Cbitvector1;

    Cbitvectorold(:,i)=Cbitvector(:,i)

 

%         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);
     poweralloctvector1old=zeros(K,1);
    poweralloctvector1new=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;   
            Saverage=1;
            sumsum2=0;
            for u=1:1:K
%                 sumsumtemp(1,u)=flag(u,i)*(log(5*Pe)/log(2.7183))/(-1.6*gamag(u,i));
                sumsumtemp(1,u)=(log(5*Pe)/log(2.7183))/(-1.6*gamag(u,i));
                sumsum2=sumsum2+sumsumtemp(1,u);
            end
            sumsum2=sumsum2/K;
            sumsum1=1+sumsum2+(log(5*Pe)/log(2.7183))/(1.6*gamag(t,i));
            poweralloctvector1(t)=Saverage*sumsum1;
        end
    end
    pow=pow+sum(poweralloctvector1);
    pow=pow/K;
    poweralloctvector(:,i)=poweralloctvector1/pow;
    
    poweralloctvectorold(:,i)=poweralloctvector(:,i)
    
    
    
    
    Cbitvectorold =[    6
     4
     2
     4
     6
     0
     6
     0
     4
     4
     4
     4
     4
     4
     4
     4]
poweralloctvectorold =[
    1.0942
    1.0777
    0.9654
    1.0777
    1.0871
    0.5471
    1.0871
    0.5455
    1.0648
    1.0648
    1.0648
    1.0648
    1.0648
    1.0648
    1.0648
    1.0647]
    
    
    
    
%     poweralloctvector(:,i)=poweralloctvector1;

%进行功率二次分配,,,poweralloctvector     Cbitvector

[seqbitvector,numorignbit]=sort(Cbitvector(:,i));
[seqpowervector,numorignpower]=sort(poweralloctvector);


if (ssss(1)~=0)
    backuppower=sum(seqpowervector(1:ssss(1)))
    
    
    ccccccccccccc=numorignpower(1:ssss(1))
        
    for tttt=1:1:ssss(1)
        poweralloctvector(numorignpower(tttt),i)=0;
    end
    
    
    
    
    
    for yyyy=2:1:4
        if (ssss(yyyy)~=0)
            numnum=sum(ssss(1:yyyy));
            poweralloctvector(numorignpower(numnum),i)=backuppower+poweralloctvector(numorignpower(numnum),i);
            if (numnum+1<=K)
%                 numnum=numnum
%                 pp=size(numorignpower)
%                 uuuuuuuuuuuuuuuuuuu=size(poweralloctvector)
%                 rrrrrrrrrrrrrrrrrrrrrr=numorignpower(2)
                if(poweralloctvector(numorignpower(numnum),i)>seqpowervector(numnum+1))
                    Cbitvector(numorignpower(numnum),i)=Cbitvector(numorignpower(numnum),i)+2;
                else
                    poweralloctvector(numorignpower(numnum),i)=-backuppower+poweralloctvector(numorignpower(numnum),i);
                    numnumqqqq=sum(ssss(1:yyyy-1))+1;
                    poweralloctvector(numorignpower(numnumqqqq),i)=poweralloctvector(numorignpower(numnumqqqq),i)+backuppower;
                end
            end
            if (numnum==K)
                poweralloctvector(numorignpower(numnum),i)=-backuppower+poweralloctvector(numorignpower(numnum),i);
                numnumqqqq=sum(ssss(1:yyyy-1))+1;
                poweralloctvector(numorignpower(numnumqqqq),i)=poweralloctvector(numorignpower(numnumqqqq),i)+backuppower;
            end
        end
    end
end
 Cbitvectornew(:,i)=Cbitvector
    poweralloctvector1new(:,i)=poweralloctvector
    
    
%      for tttt=1:1:ssss(1)
%         poweralloctvector1new(numorignpower(tttt),i)=0;
%     end
        
    for tttt=1:1:ssss(1)
        poweralloctvector1(numorignpower(tttt),i)=0;
    end
    diffpower=sum(poweralloctvector1new(:,i)-poweralloctvector1old(:,i))
    
diffbit=sum(Cbitvectornew(:,i)-Cbitvectorold(:,i))



end



⌨️ 快捷键说明

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