大规模 MIMO 检测的近似消息传递 (AMP)附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信       无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机 

⛄ 内容介绍

Vector perturbation (VP) precoding is a promising technique for multiuser communication systems operating in the downlink. In this work, we introduce a hybrid framework to improve the performance of lattice reduction (LR) aided precoding in VP. First, we perform a simple precoding using zero forcing (ZF) or successive interference cancellation (SIC) based on a reduced lattice basis. Since the signal space after LR-ZF or LR-SIC precoding can be shown to be bounded to a small range, then along with sufficient orthogonality of the lattice basis guaranteed by LR, they collectively pave the way for the subsequent application of an approximate message passing (AMP) algorithm, which further boosts the performance of any suboptimal precoder. Our work shows that the AMP algorithm can be beneficial for a lattice decoding problem whose data symbols lie in integers and entries of the lattice basis may not be i.i.d. Gaussian. Numerical results confirm that the low-complexity AMP algorithm can improve the symbol error rate performance of LR-aided precoding significantly. 

⛄ 部分代码

​clc;clear all;close all;

linestyles = cellstr(char('-','--','-.','--'));

SetColors=lines(10);  

Markers=['o','x','+','*'];

legendbox={'MMSE','MMSE-AMPT', 'MMSE-AMPG'};

   

n=32;% # of users

m=64;% # of received antennas; m is much larger than n in massive mimo

SNR_range=[0:4:16]; % the tested range of SNR

count=0;

algorithms=[1:1:3];

for SNR=SNR_range

for monte=1:4e3 % the number of MonteCarlo simulations

    H=randn(m,n); %channel matrix

    A=7;% size of constellations

    u=1*randi([-A,A],n,1);% symbols in users 

    

    sigmas2=A*(A+1)/3;              % theoretical signal power;  

    sigma2=sigmas2/((10^(SNR/10))); % noise power

    y=H*u+sqrt(sigma2)*randn(m,1);  %the received signal

     for j=algorithms

          switch j

             case 1 %  MMSE

            xhat=round(pinv([H;sigma2/sigmas2*eye(n)])*[y;zeros(n,1)]);

            x_mmse=xhat;

             case 2 % MMSE-AMPT

            yp=y-H*x_mmse; %yp is the difference vector

            xhat=x_mmse+AMPT(yp,H,.5,.5); % AMP with ternery priors

             case 3  % MMSE-AMPG

            yp=y-H*x_mmse;

            xhat=x_mmse+AMPG(yp,H,sigmas2/20,.5);% AMP with Gaussian priors;the signal power is unknown

          end   

        uhat=max(min(xhat,A*ones(n,1)),-A*ones(n,1));%estimated symbols

        ser(j,monte)=sum(u~=uhat)/n; % symbol error rate    

     end

end

    count=count+1;

    SER(:,count)=mean(ser,2);

end

figure(1)

    for j=algorithms

semilogy(SNR_range,SER(j,:),[linestyles{j} Markers(j)],'Color',SetColors(j,:),'Linewidth',2);

        hold on;

        grid on;

    end

hold off;

h=legend(legendbox(algorithms)); 

xlabel('SNR/dB');ylabel('SER');

⛄ 运行结果

​⛄ 参考文献

[1] Lyu S ,  Ling C . Hybrid Vector Perturbation Precoding: The Blessing of Approximate Message Passing[J]. IEEE Transactions on Signal Processing, 2017, PP:1-1.

⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除

❤️ 关注我领取海量matlab电子书和数学建模资料

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值