当前位置: 首页 > news >正文

第【60期】--大规模MIMO系统信号检测算法误码率比较 --matlab完整代码+参考文章

文章目录

    • 摘要
    • 1 背景意义
    • 2 理论基础
      • 2.1 大规模MIMO上行链路模型
    • 2.2 最大似然检测
    • 2.2 匹配滤波(Matched Filter, MF)
    • 2.3 最小均方误差检测(MMSE)
      • 2.3 SIMO性能上界
      • 2.4 诺伊曼级数近似(Neumann Series)
      • 2.5 高斯-赛德尔迭代(Gauss-Seidel)
      • 2.6共轭梯度法(Conjugate Gradient, CG)
      • 2.7优化坐标下降BOX检测器(OCDBOX)
      • 2.8 ADMM无穷范数检测器
    • 3 仿真结果

摘要

本文提出一个研究了大规模多输入多输出(MIMO)上行链路系统中主流信号检测算法的性能,实现了八种具有代表性的检测器,分为三类:(1)传统线性检测方案,包括匹配滤波(MF)和最小均方误差(MMSE)检测;(2)基于近似求逆的检测方法,包括诺伊曼级数近似、高斯-赛德尔迭代和共轭梯度(CG)检测;(3)基于BOX约束的检测方法,包括基于交替方向乘子法的无穷范数(ADMIN)检测器和优化坐标下降BOX(OCDBOX)检测器。此外,单输入多输出(SIMO)上界作为理想性能基准提供。

参考文章:
S. Shahabddin, M. Juntti and C. Studer, “ADMM-based infinity-norm detector for large-scale MIMO”, IEEE International symposium of circuits and systems, Maryland, USA, May 2017.

1 背景意义

大规模MIMO技术在基站端部署数十至数百根天线,在同一时频资源内服务多个用户终端,能够显著提升系统频谱效率和链路可靠性,已成为5G无线通信系统的关键使能技术之一。然而,大规模MIMO带来的性能增益是以计算复杂度的显著增加为代价的。在上行链路中,基站需要从所有用户同时发送的叠加信号中准确检测出每个用户的发送符号,这一检测过程的计算复杂度随着用户数和调制阶数的增长而急剧上升。
最优的最大似然(ML)检测通过对所有可能的发送符号组合进行穷举搜索实现,其复杂度随用户数呈指数增长[3],在大规模MIMO系统中完全不可行。传统的线性检测算法如匹配滤波(MF)和最小均方误差(MMSE)检测[4]虽然复杂度较低,但在天线数接近用户数时性能严重恶化。

2 理论基础

2.1 大规模MIMO上行链路模型

2.2 最大似然检测

2.2 匹配滤波(Matched Filter, MF)

2.3 最小均方误差检测(MMSE)

2.3 SIMO性能上界

假设在检测第 k 个用户时完美消除了所有其他用户的干扰:

2.4 诺伊曼级数近似(Neumann Series)

2.5 高斯-赛德尔迭代(Gauss-Seidel)

2.6共轭梯度法(Conjugate Gradient, CG)

2.7优化坐标下降BOX检测器(OCDBOX)

2.8 ADMM无穷范数检测器

ADMM将(18)改写为等价形式,采用ADMM求解

3 仿真结果

部分代码:

ifisempty(varargin)disp('使用默认仿真设置和参数...')%设置默认仿真参数 par.suffix='exp';%仿真名称后缀:'exp'实验 par.runId=0;%仿真ID(用于复现结果) par.MR=64;%接收天线数 par.MT=16;%用户终端数(不大于MR!) par.mod='64QAM';%调制类型:'BPSK','QPSK','16QAM','64QAM'par.simName=['ERR_'num2str(par.MR)'x'num2str(par.MT)'_'par.mod'_'par.suffix];%仿真名称(用于保存结果) par.trials=100;%蒙特卡洛试验次数 par.SNRdB_list=10:2:20;%待仿真的SNR[dB]列表 par.detector={'MF','SIMO','Conjugate-Gradient','Neumann','Gauss-Seidel','OCDBOX','ADMIN','MMSE'};%待仿真的检测器列表%算法专用参数 par.alg.maxiter=3;%迭代算法的最大迭代次数elsedisp('使用自定义仿真设置和参数...')par=varargin{1};%唯一参数为par结构体 end%--初始化%使用runId随机种子(保证可复现性)%rng(par.runId);%建立格雷映射的星座字母表(依据IEEE802.11switch(par.mod)case'BPSK'par.symbols=[-11];case'QPSK'par.symbols=[-1-1i,-1+1i,...+1-1i,+1+1i];case'16QAM'par.symbols=[-3-3i,-3-1i,-3+3i,-3+1i,...-1-3i,-1-1i,-1+3i,-1+1i,...+3-3i,+3-1i,+3+3i,+3+1i,...+1-3i,+1-1i,+1+3i,+1+1i];case'64QAM'par.symbols=[-7-7i,-7-5i,-7-1i,-7-3i,-7+7i,-7+5i,-7+1i,-7+3i,...-5-7i,-5-5i,-5-1i,-5-3i,-5+7i,-5+5i,-5+1i,-5+3i,...-1-7i,-1-5i,-1-1i,-1-3i,-1+7i,-1+5i,-1+1i,-1+3i,...-3-7i,-3-5i,-3-1i,-3-3i,-3+7i,-3+5i,-3+1i,-3+3i,...+7-7i,+7-5i,+7-1i,+7-3i,+7+7i,+7+5i,+7+1i,+7+3i,...+5-7i,+5-5i,+5-1i,+5-3i,+5+7i,+5+5i,+5+1i,+5+3i,...+1-7i,+1-5i,+1-1i,+1-3i,+1+7i,+1+5i,+1+1i,+1+3i,...+3-7i,+3-5i,+3-1i,+3-3i,+3+7i,+3+5i,+3+1i,+3+3i];end%提取平均符号能量 par.Es=mean(abs(par.symbols).^2);%预计算比特标签 par.Q=log2(length(par.symbols));%每个符号的比特数 par.bits=de2bi(0:length(par.symbols)-1,par.Q,'left-msb');%跟踪仿真时间 time_elapsed=0;%--开始仿真%初始化结果数组(检测器 x SNR) res.VER=zeros(length(par.detector),length(par.SNRdB_list));%向量错误率 res.SER=zeros(length(par.detector),length(par.SNRdB_list));%符号错误率 res.BER=zeros(length(par.detector),length(par.SNRdB_list));%比特错误率%生成随机比特流(天线 x 比特 x 试验) bits=randi([01],par.MT,par.Q,par.trials);%试验循环 ticfort=1:par.trials%生成发送符号 idx=bi2de(bits(:,:,t),'left-msb')+1;s=par.symbols(idx).';%生成独立同分布的高斯信道矩阵和噪声向量 n=sqrt(0.5)*(randn(par.MR,1)+1i*randn(par.MR,1));H=sqrt(0.5)*(randn(par.MR,par.MT)+1i*randn(par.MR,par.MT));%通过无噪声信道发送(稍后使用) x=H*s;%SNR 循环fork=1:length(par.SNRdB_list)%当前SNR点(dB) SNR_dB=par.SNRdB_list(k);%线性SNR SNR_lin=10.^(SNR_dB./10);%每根接收天线的复噪声方差 N0=par.Es*par.MT/SNR_lin;%通过有噪声信道发送数据 y=x+sqrt(N0)*n;%算法循环ford=1:length(par.detector)switch(par.detector{d})%选择算法case'MF'%匹配滤波[idxhat,bithat]=MF(par,H,y);case'MMSE'%MMSE检测器[idxhat,bithat]=MMSE(par,H,y,N0);case'SIMO'%SIMO下界[idxhat,bithat]=SIMO(par,H,y,s);case'ADMIN'%基于ADMM的无穷范数检测器[idxhat,bithat]=ADMIN(par,H,y,N0);case'OCDBOX'%优化坐标下降BOX检测器[idxhat,bithat]=OCDBOX(par,H,y);case'Neumann'%诺伊曼级数近似[idxhat,bithat]=Neumann(par,H,y,N0);case'Gauss-Seidel'%高斯-赛德尔检测器[idxhat,bithat]=Gauss_Seidel(par,H,y,N0);case'Conjugate-Gradient'%共轭梯度检测器[idxhat,bithat]=CG(par,H,y,N0);otherwiseerror('par.detector 类型未定义。')end%--计算错误指标 err=(idx~=idxhat);res.VER(d,k)=res.VER(d,k)+any(err);res.SER(d,k)=res.SER(d,k)+sum(err)/par.MT;res.BER(d,k)=res.BER(d,k)+sum(sum(bits(:,:,t)~=bithat))/(par.MT*par.Q);end%算法循环结束 end%SNR循环结束%跟踪仿真时间iftoc>10time=toc;time_elapsed=time_elapsed+time;fprintf('预计剩余仿真时间: %3.0f 分钟。\n',time_elapsed*(par.trials/t-1)/60);tic end end%试验循环结束%归一化结果 res.VER=res.VER/par.trials;res.SER=res.SER/par.trials;res.BER=res.BER/par.trials;res.time_elapsed=time_elapsed;%--保存最终结果(par和res结构体)%save([par.simName'_'num2str(par.runId)],'par','res');%--显示结果(生成美观的Matlab图形) marker_style={'bo-','rs--','mv-.','kp:','g*-','c>--','yx:','k--'};figure(1)ford=1:length(par.detector)ifd==1semilogy(par.SNRdB_list,res.BER(d,:),marker_style{d},'LineWidth',2)hold onelsesemilogy(par.SNRdB_list,res.BER(d,:),marker_style{d},'LineWidth',2)end end hold off grid onxlabel('每根接收天线的平均SNR [dB]','FontSize',12)ylabel('比特误码率 (BER)','FontSize',12)axis([min(par.SNRdB_list)max(par.SNRdB_list)1e-41])legend(par.detector,'FontSize',12)set(gca,'FontSize',12)end
http://www.jsqmd.com/news/1138124/

相关文章:

  • edge常用插件
  • 免费英雄联盟换肤神器:R3nzSkin国服特供版完整使用指南
  • 基于STM32单片机的智能窗户/窗帘晾衣架/雨滴光照检测系统成品31(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • 信号完整性分析实战:3种终端匹配方案对LVTTL信号反射的抑制效果对比
  • BetterNCM Installer:3分钟解锁网易云音乐隐藏功能,打造你的专属音乐播放器
  • AD封装库避坑指南:5个常见封装错误导致PCB焊接失败的案例分析
  • FBI查封NetNut域名,谷歌中断200万台设备代理网络
  • 15个免费的UI设计资源,原型+图标
  • DAY 16
  • TegraRcmGUI终极指南:如何用图形化界面轻松破解Nintendo Switch
  • 130.工业级标准化 PLC 项目!ST 状态机物料分拣|PID 调速 + 称重滤波 + 故障保护
  • 15个实用的API文档生成工具,Swagger替代品
  • Scikit-learn 1.4 实战:3种决策树剪枝策略对比,Kaggle房价预测MAE降低15%
  • 零基础也能学会!2026百度网盘不限速终极指南,永久告别几KB下载
  • 2026年茂名老山檀香厂家推荐:这3家品质靠谱值得信赖
  • 基于STM32单片机的智能家居 防火防盗 报警系统 震动报警GSM短信231(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • 媒体流与轨道:MediaStream 与 MediaStreamTrack
  • 实用Windows风扇控制软件:FanControl让你的电脑安静又高效
  • 免费开源字幕编辑神器:Subtitle Edit 5分钟上手完全指南
  • XSS攻击实战:从Cookie窃取到会话劫持的攻防解析
  • literally 加强语气,≈简直、真的、实在是,无“字面”含义,纯感叹
  • Claude Code 的可恢复性机制
  • 15个实用的API文档生成工具,自动化
  • 基于STM32单片机车载儿童防窒息 车载儿童滞留检测安全座椅系统312(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • Understat Python库:构建专业级足球数据分析系统的完整指南
  • FlashAttention 收益边界:注意力优化不是所有模型都能白赚
  • 极简工作流引擎设计:基于状态机的轻量级编排内核实现——不依赖重型框架,用500行代码搭建可控的业务流程引擎
  • AI商业洞察动态简报(2026.07.06)
  • REPENTOGON:如何为《以撒的结合:悔改》安装终极脚本扩展器?
  • 黑苹果配置革命:OpCore-Simplify如何让复杂技术变得像搭积木一样简单?