1.算法仿真效果
matlab2022a仿真結(jié)果如下(完整代碼運(yùn)行后無水优朗):
仿真操作步驟可參考程序配套的操作視頻。
2.算法涉及理論知識概要
LS估計(jì)法實(shí)現(xiàn)方式較為簡單曲梗,其估計(jì)過程沒有考慮實(shí)際信道的噪聲因素赞警。因此,特別當(dāng)毫米波MIMO信道干擾較大時(shí)虏两,其估計(jì)性能較差愧旦,只適用于對信道估計(jì)精度要求較低,且信噪比較大的情況定罢。
OMP估計(jì)法是一種自適應(yīng)的信道估計(jì)方法笤虫,其不需要預(yù)先獲得信道矩陣H的稀疏解的原子數(shù)K。為了獲得預(yù)設(shè)的信道估計(jì)精度時(shí),OMP估計(jì)法需要比CoSaMP估計(jì)法更多的迭代次數(shù)琼蚯。但是過多的迭代次數(shù)酬凳,會(huì)導(dǎo)致信道估計(jì)誤差的不斷累積,從而影響最終的信道估計(jì)性能遭庶。
CoSaMP估計(jì)法具有較優(yōu)的信道估計(jì)性能宁仔,但其在低信噪比下性能較差。但是拉队,CoSaMP估計(jì)法性能依賴于在原子數(shù)K的取值叔扼,且CoSaMP信道估計(jì)的計(jì)算過程較為復(fù)雜鳍咱,對計(jì)算效率有著較高的要求价捧。
NOMP估計(jì)法的性能較優(yōu),其同時(shí)具備OMP和CoSaMP兩種方法的優(yōu)點(diǎn)推正。因此尊残,改算法可以通過較小的計(jì)算規(guī)模和少量的迭代次數(shù)完成毫米波MIMO信道的估計(jì)粘勒。但是該方法的使用場合存在一定的局限性事富,其適用于窄帶毫米波群簇信道模型贱勃,而對于其他類型的毫米波MIMO信道模型,其性能將受到影響。
基于BP神經(jīng)網(wǎng)絡(luò)的改進(jìn)CoSaMP信道估計(jì)算法,通過BP神經(jīng)網(wǎng)絡(luò)運(yùn)行得到的訓(xùn)練后的最優(yōu)參數(shù)權(quán)重參數(shù):
在BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練結(jié)束之后绒障,可以得到BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練得到的hcmp值怀骤。
再假設(shè)CoSaMP估計(jì)法得到的信道估計(jì)值:
CoSaMP算法的毫米波MIMO信道估計(jì)輸出值hcosamp和BP神經(jīng)網(wǎng)絡(luò)信道估計(jì)補(bǔ)償輸出值hcmp進(jìn)行加權(quán)得到當(dāng)前信道估計(jì)值韧献,即:
3.MATLAB核心程序
for i1=1:MTKL
rng(i1);
for j1=1:length(SNR)
[i1,j1]
[Noise0,sigma0] = func_whitenoise(seqdH,SNR(j1),V1); ??
%OFDM機(jī)制
seqdH_ifft ?????= ifft(seqdH);
Y ?????????????= seqdH_ifft+Noise0;
Yfft ??????????= fft(Y);
%LS算法
MSE_LS ???????= func_LS(seqd,H,Yfft,N);
%OMP
MSE_OMP ??????= func_OMP(Yfft,seqd,H,invH,N,L,K);
%NOOMP
MSE_NOMP ?????= func_NOMP(Yfft,seqd,H,invH,N,L,K);
%CoSaMP
MSE_CoSaMP ???= func_CoSaMP(Yfft,seqd,H,invH,N,L); ????????
%CoSaMP
MSE_CoSaMPnew = func_CoSaMPnew(Yfft,seqd,H,invH,N,L,K);
end
end
figure;
semilogy(SNR,mean(R_LS),'-bs',...
'LineWidth',1,...
'MarkerSize',6,...
'MarkerEdgeColor','k',...
'MarkerFaceColor',[0.9,0.0,0.0]);
hold on;
semilogy(SNR,mean(R_OMP),'-mo',...
'LineWidth',1,...
'MarkerSize',6,...
'MarkerEdgeColor','k',...
'MarkerFaceColor',[0.5,0.9,0.0]);
hold on;
semilogy(SNR,mean(R_NOMP),'-b^',...
'LineWidth',1,...
'MarkerSize',6,...
'MarkerEdgeColor','k',...
'MarkerFaceColor',[0.2,0.9,0.5]);
hold on;
semilogy(SNR,mean(R_CoSaMP),'-r>',...
'LineWidth',1,...
'MarkerSize',6,...
'MarkerEdgeColor','k',...
'MarkerFaceColor',[0.9,0.9,0.0]);
hold on;
semilogy(SNR,mean(R_CoSaMPNEW),'-k<',...
'LineWidth',1,...
'MarkerSize',6,...
'MarkerEdgeColor','k',...
'MarkerFaceColor',[0.9,0.3,0.3]);
hold on;
xlabel('SNR');
ylabel('MSE');
grid on
legend('LS','OMP','MOMP','CoSaMP','BP+CoSaMP');
0X_070m