基于(yu)遺傳算法的64QAM星(xing)座(zuo)圖的最優(you)概率整形matlab仿真,對比優(you)化(hua)前后整形星(xing)座(zuo)圖和誤碼(ma)率
1.算法仿真效果
matlab2022a仿真結果如下(完(wan)整代碼運行后無水印):
GA優化過程:

優化前后(hou)星座(zuo)圖對比:

(優化后,邊緣的星(xing)座點會聚集到中心,所以整體看(kan),星(xing)座點邊緣區域會變小(xiao)或者消失)
優化(hua)前后誤(wu)碼(ma)率(lv)對比(bi):

仿真(zhen)操作步(bu)驟可參考程序配套的(de)操作視頻。
2.算法(fa)涉(she)及理論知識概要
64QAM 是一種高階調制方式,星座(zuo)(zuo)圖中(zhong)有(you) 64 個星座(zuo)(zuo)點(dian)(dian),每(mei)個星座(zuo)(zuo)點(dian)(dian)對應 6 比特信息。傳(chuan)(chuan)統的 64QAM 采用均勻分布(bu)。通(tong)過(guo)改變改變星座(zuo)(zuo)圖不同位置(zhi)符(fu)號(hao)出現的概率(lv)(lv),讓(rang)外圈星座(zuo)(zuo)點(dian)(dian)出現頻率(lv)(lv)降低,有(you)利于(yu)減小平均功率(lv)(lv),相當于(yu)增(zeng)加了最小歐氏距離(li),從(cong)而有(you)更好的傳(chuan)(chuan)輸性(xing)能。這就是我們所(suo)說(shuo)的概率(lv)(lv)星座(zuo)(zuo)整(zheng)形(PCS)了。它究(jiu)竟有(you)什么好處呢?
1. 具有整形增益。
2. 有望達到更高的(de)傳輸(shu)容量,顯著提升(sheng)頻譜效率。
3. 傳輸(shu)速(su)率可(ke)以(yi)靈活調整(zheng),以(yi)完(wan)美適配不同的(de)傳輸(shu)信道(dao)。
4. 無須多種(zhong)支(zhi)持多種(zhong)QAM映射(she),僅(jin)使用方(fang)形(xing)(xing)QAM調(diao)制(zhi),需調(diao)整(zheng)(zheng)整(zheng)(zheng)形(xing)(xing)系數
PCS的(de)關鍵(jian)在于(yu)如(ru)何對(dui)均勻(yun)概(gai)(gai)率(lv)(lv)的(de)輸(shu)出映射成非均勻(yun)概(gai)(gai)率(lv)(lv)幅度分布(bu),而(er)且該概(gai)(gai)率(lv)(lv)分布(bu)還應該是最優的(de)。理(li)論上可以證(zheng)明(ming)Maxwell-Boltzman分布(bu)對(dui)于(yu)方(fang)形(xing)QAM整形(xing)是最優的(de)概(gai)(gai)率(lv)(lv)分布(bu)。概(gai)(gai)率(lv)(lv)星座整形(xing)一般使用如(ru)下的(de)公式完成:

參數v為整形因子(zi)。在(zai)本課(ke)題中,將通過(guo)GA優(you)化算(suan)法,搜索最佳(jia)的(de)(de)(de)參數(shu)v,進一步(bu)(bu)提升概(gai)(gai)(gai)率(lv)整形后(hou)的(de)(de)(de)系(xi)統(tong)性能。以 64QAM 的(de)(de)(de)誤碼(ma)率(lv)(BER)作為適(shi)應(ying)度(du)函數(shu)。誤碼(ma)率(lv)越低,表明該概(gai)(gai)(gai)率(lv)整形因子(zi) 對應(ying)的(de)(de)(de)星(xing)座(zuo)點概(gai)(gai)(gai)率(lv)分(fen)布越優(you)。在(zai)實際(ji)計算(suan)時,可通過(guo)蒙特卡羅仿真來估計誤碼(ma)率(lv)。具體步(bu)(bu)驟(zou)為:依(yi)據當前的(de)(de)(de) 計算(suan)每個(ge)星(xing)座(zuo)點的(de)(de)(de)發送概(gai)(gai)(gai)率(lv),生成大量發送符(fu)(fu)號(hao)(hao),經過(guo)加(jia)性高斯白噪(zao)聲(AWGN)信道傳輸(shu),接收符(fu)(fu)號(hao)(hao)并進行解調,統(tong)計錯誤比特數(shu),進而計算(suan)誤碼(ma)率(lv)。
通過GA算法(fa),獲得最(zui)優的參數v,以降低 64QAM 的誤碼(ma)率。
3.MATLAB核心程(cheng)序(xu)
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
