• 用于大规模 MIMO 检测的近似消息传递 (AMP)(Matlab代码实现)


     👨‍🎓个人主页:研学社的博客 

    💥💥💞💞欢迎来到本博客❤️❤️💥💥

    🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

    ⛳️座右铭:行百里者,半于九十。

    📋📋📋本文目录如下:🎁🎁🎁

    目录

    💥1 概述

    📚2 运行结果

    🌈3 Matlab代码实现

    🎉4 参考文献


    💥1 概述

    大规模MIMO系统上行数据检测问题中的晶格基(信道矩阵)自然是短而正交的,因此我们可以在不使用格约简的情况下将混合方案应用于该场景。仿真结果验证了该扩展的有效性。

    📚2 运行结果

    🌈3 Matlab代码实现

    部分代码:

    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');

    🎉4 参考文献

    部分理论来源于网络,如有侵权请联系删除。

    [1]Lyu, Shanxiang, and Cong Ling. “Hybrid Vector Perturbation Precoding: The Blessing of Approximate Message Passing.” IEEE Transactions on Signal Processing, Institute of Electrical and Electronics Engineers (IEEE), 2018, pp. 1–1, doi:10.1109/tsp.2018.2877205. 

  • 相关阅读:
    matlab分岔图绘制
    【FPGA教程案例39】通信案例9——基于FPGA的交织-解交织数据传输
    MIT_线性代数笔记:列空间和零空间
    (附源码)计算机毕业设计SSM基于的图书馆管理系统
    高并发下的服务容错
    万字详解:推荐系统的知识与整体框架
    Vue组件通信(组件的自定义事件、全局事件总线、消息订阅与发布、插槽、props)(八)
    springboot+jsp项目校园外卖配送系统
    Neo4j CQL
    关于SQLSERVER触发器的一个问题
  • 原文地址:https://blog.csdn.net/weixin_46039719/article/details/128082767