中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

基于遺傳算法的256QAM星座圖的最優概率整形matlab仿真,對比優化前后整形星座圖和誤碼率

1.算法仿真效果

matlab2022a仿真結果如下(完整代碼運行后無水印):

 

GA優化曲線:

 

 

 

優化前后星座圖對比

 

 

 

優化前后誤碼率對比

 

 

 

仿真操作步驟可參考程序配套的操作視頻。

 

2.算法涉及理論知識概要

       256QAM 是一種高階調制方式,星座圖中有256個星座點,每個星座點對應 8 比特信息。傳統的 256QAM 采用均勻分布。通過改變改變星座圖不同位置符號出現的概率,讓外圈星座點出現頻率降低,有利于減小平均功率,相當于增加了最小歐氏距離,從而有更好的傳輸性能。這就是我們所說的概率星座整形(PCS)了。它究竟有什么好處呢?

 

1. 具有整形增益。

 

2. 有望達到更高的傳輸容量,顯著提升頻譜效率。

 

3. 傳輸速率可以靈活調整,以完美適配不同的傳輸信道。

 

4. 無須多種支持多種QAM映射,僅使用方形QAM調制,需調整整形系數

 

        PCS的關鍵在于如何對均勻概率的輸出映射成非均勻概率幅度分布,而且該概率分布還應該是最優的。理論上可以證明Maxwell-Boltzman分布對于方形QAM整形是最優的概率分布。概率星座整形一般使用如下的公式完成:

 

 

 

       參數v為整形因子。在本課題中,將通過GA優化算法,搜索最佳的參數v,進一步提升概率整形后的系統性能。以 256QAM 的誤碼率(BER)作為適應度函數。誤碼率越低,表明該概率整形因子  對應的星座點概率分布越優。在實際計算時,可通過蒙特卡羅仿真來估計誤碼率。具體步驟為:依據當前的  計算每個星座點的發送概率,生成大量發送符號,經過加性高斯白噪聲(AWGN)信道傳輸,接收符號并進行解調,統計錯誤比特數,進而計算誤碼率。

 

       通過GA算法,獲得最優的參數v,以降低256QAM 的誤碼率。

 

3.MATLAB核心程序

MAXGEN = 15;
NIND   = 20;
Nums   = 1; 
Chrom  = crtbp(NIND,Nums*10);
 
%sh
Areas = [];
for i = 1:Nums
    Areas = [Areas,[0;0.25]];% 優化概率整形參數v
end
FieldD = [rep([10],[1,Nums]);Areas;rep([0;0;0;0],[1,Nums])];
 
gen   = 0;
for a=1:1:NIND 
    %計算對應的目標值
    X       = rand(1,Nums)/10;%初始值
    [epls]  = func_obj(X);
    E       = epls;
    Js(a,1) = E;
end
 
Objv  = (Js+eps);
gen   = 0; 
 
%%
while gen < MAXGEN  
      gen
      Pe0 = 0.998;
      pe1 = 0.002; 
 
      FitnV=ranking(Objv);    
      Selch=select('sus',Chrom,FitnV);    
      Selch=recombin('xovsp', Selch,Pe0);   
      Selch=mut( Selch,pe1);   
      phen1=bs2rv(Selch,FieldD);   
 
      for a=1:1:NIND  
          X     = phen1(a,:);
          %計算對應的目標值
          [epls]= func_obj(X);
          E       = epls;
          JJ(a,1) = E;
      end 
      
      Objvsel=(JJ);    
      [Chrom,Objv]=reins(Chrom,Selch,1,1,Objv,Objvsel);   
      gen=gen+1; 
 
      %保存參數收斂過程和誤差收斂過程以及函數值擬合結論
 
      Error(gen) = mean(JJ) ;
      [V,I]      = min(JJ);
 
      VVV(gen)   = phen1(I,:);
      VVV2(gen)  = mean2(phen1) ;
end 
 
figure;
plot(Error,'linewidth',2);
grid on
xlabel('迭代次數');
ylabel('遺傳算法優化過程');
legend('Average fitness');
 
[V,I] = min(JJ);
VV     = phen1(I,:);
 
 
save GA_OPT.mat Error VV 

  

posted @ 2025-06-18 00:13  我愛C編程  閱讀(48)  評論(0)    收藏  舉報