基于BP神经网络的CoSaMP信道估计算法matlab性能仿真,对比LS,OMP,MOMP,CoSaMP
1.算法仿真效果
matlab2022a仿真结果如下(完整代码运行后无水印):
仿真操作步骤可参考程序配套的操作视频。
2.算法涉及理论知识概要
LS估计法实现方式较为简单,其估计过程没有考虑实际信道的噪声因素。因此,特别当毫米波MIMO信道干扰较大时,其估计性能较差,只适用于对信道估计精度要求较低,且信噪比较大的情况。
OMP估计法是一种自适应的信道估计方法,其不需要预先获得信道矩阵H的稀疏解的原子数K。为了获得预设的信道估计精度时,OMP估计法需要比CoSaMP估计法更多的迭代次数。但是过多的迭代次数,会导致信道估计误差的不断累积,从而影响最终的信道估计性能。
CoSaMP估计法具有较优的信道估计性能,但其在低信噪比下性能较差。但是,CoSaMP估计法性能依赖于在原子数K的取值,且CoSaMP信道估计的计算过程较为复杂,对计算效率有着较高的要求。
NOMP估计法的性能较优,其同时具备OMP和CoSaMP两种方法的优点。因此,改算法可以通过较小的计算规模和少量的迭代次数完成毫米波MIMO信道的估计。但是该方法的使用场合存在一定的局限性,其适用于窄带毫米波群簇信道模型,而对于其他类型的毫米波MIMO信道模型,其性能将受到影响。
基于BP神经网络的改进CoSaMP信道估计算法,通过BP神经网络运行得到的训练后的最优参数权重参数:
在BP神经网络训练结束之后,可以得到BP神经网络训练得到的hcmp值。
再假设CoSaMP估计法得到的信道估计值:
CoSaMP算法的毫米波MIMO信道估计输出值hcosamp和BP神经网络信道估计补偿输出值hcmp进行加权得到当前信道估计值,即:
3.MATLAB核心程序
for i1=1:MTKL rng(i1); for j1=1:length(SNR) [i1,j1] [Noise0,sigma0] = func_whitenoise(seqdH,SNR(j1),V1); %OFDM机制 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