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

(57)MATLAB使用迫零均衡器和MMSE均衡器的BPSK调制系统仿真

文章目录

  • 前言
  • 一、仿真测试模型
  • 二、仿真代码
  • 三、仿真结果
  • 四、迫零均衡器和MMSE均衡器的实现
    • 1.均衡器的MATLAB实现
    • 2.均衡器的性能测试
  • 总结


前言

本文给出仿真模型与MATLAB代码,分别使用具有ISI的三个不同传输特性的信道,仿真测试了使用迫零均衡器和MMSE均衡器的基带BPSK传输系统的性能,绘制出Eb/N0-SER性能曲线。


一、仿真测试模型

在设计和测试了迫零均衡器和MMSE线性均衡器之后,接下来在通信链路上测试它们的性能。线性均衡器的性能完全取决于通信发生的信道的特性。本文基于上一篇文章介绍的三个不同信道进行均衡器性能测试。

仿真测试模型如下:

在这里插入图片描述

在该仿真模型中,一串随机信源数据经过BPSK调制后,分别通过所设计的ISI离散信道,同时,传输的数据还叠加了加性白高斯噪声(由给定的Eb/N0值决定)。在接收端,接收到的数据分别通过延迟优化的迫零均衡器和MMSE均衡器,在两条不同的路径上独立处理。均衡器的输出通过阈值检测器,给出传输符号的估计。为了对比,还增加了一条没有均衡器的解调路径。最终,检测到的符号与原始数据序列进行对比,计算误码率。仿真在不同Eb/N0值下进行,并将结果绘制成性能曲线。

下面给出MATLAB代码。

二、仿真代码

代码如下:

%---------Input Fields------------------------
N = 1e7;                     % 仿真发送的符号数
EbN0_dB = 0:2:30;
% EbN0_dB = 0:2:12;
M = 2;                       % 调制阶数h_c = [0.04 -0.05 0.07 -0.21 -0.5 0.72 0.36 0.21 0.03 0.07];      % 信道A
% h_c = [0.407 0.815 0.407];                                        % 信道B
% h_c = [0.227 0.460 0.688 0.460 0.227];                            % 信道C
% h_c = [0.0102 0.0227 0.0460 0.688 0.0460 0.0227 0.0102];          % 信道D,弱ISInTaps = 31;                                       % 均衡滤波器的抽头数
snr = EbN0_dB - 10*log10(0.5);                    % 0.5是因为实信号
[~,Imax] = max(h_c);                              % 取信道响应的最大值作为判决值SER_zf = zeros(length(EbN0_dB),1);
SER_mmse = zeros(length(EbN0_dB),1);
SER_noeq = zeros(length(EbN0_dB),1);%-----------------Transmitter---------------------
d = randi([0,1],1,N);                             % 生成均匀分布的随机信源符号
ref = cos(((M:-1:1)-1)/M*2*pi);                   % BPSK星座,[-1, 1]
s = ref(d+1);                                     % BPSK调制%----------------Channel---------------------
x = conv(s,h_c);                                  % ISI信道作用于调制符号%%for i=1:length(EbN0_dB)%----------------Channel---------------------r = awgn(x,snr(i),'measured');%---------------Receiver--------------------%(1)不使用信道均衡y_noeq = r(Imax:Imax+length(d)-1);dcap_noeq = (y_noeq >= 0);                                    % 判决,判决结果是d帽SER_noeq(i) = sum((d~=dcap_noeq))/N;                          % 计算误符号率%(2)延迟优化MMSE均衡器[h_mmse,MSE,optDelay] = mmse_equalizer(h_c,EbN0_dB(i),nTaps); % 设计MMSE均衡器y_mmse = conv(h_mmse,r);                                      % 对接收信号进行MMSE均衡y_mmse = y_mmse(optDelay+1:optDelay+N);                       % 考虑均衡延时dcap_mmse = (y_mmse >= 0);                                    % 判决SER_mmse(i) = sum((d~=dcap_mmse))/N;                          % 计算误符号率%(3)延迟优化迫零均衡器[h_zf,error,optDelay] = zf_equalizer(h_c,nTaps);              % 设计迫零均衡器y_zf = conv(h_zf,r);                                          % 对接收信号进行迫零均衡y_zf = y_zf(optDelay+1:optDelay+N);                           % 考虑均衡延时dcap_zf = (y_zf >= 0);                                        % 判决SER_zf(i) = sum((d~=dcap_zf))/N;                              % 计算误符号率
end%(4)BPSK的误符号率理论值
EbN0 = 10.^(EbN0_dB/10);
SER_theoretical = 0.5*erfc(sqrt(EbN0));

三、仿真结果

仿真结果如下:
信道A:
在这里插入图片描述

信道B:
在这里插入图片描述
信道C:
在这里插入图片描述

可见,两种均衡器的性能在信道A中最佳,信道A具有典型的理想电话信道的响应(信道响应在整个频带内逐渐变化,没有频谱零点)。对于频谱特性最差的信道C,MMSE均衡器的性能优于ZF均衡器。信道B的MMSE均衡器性能次佳。信道B仍然存在频谱零点,但不像信道C那样严重。迫零均衡器在信道B和信道C上的性能最差。这是因为迫零均衡器在计算抽头权重时,只考虑消除码间串扰,而忽略了信道噪声。

四、迫零均衡器和MMSE均衡器的实现

1.均衡器的MATLAB实现

迫零均衡器和MMSE均衡器的实现见:
(49)MATLAB实现迫零均衡器原理与代码

(53)MATLAB实现MMSE均衡器原理与代码

2.均衡器的性能测试

迫零均衡器和MMSE均衡器的性能仿真见:
(51)MATLAB迫零均衡器系统建模与性能仿真

(55)MMSE均衡器系统MATLAB建模与性能仿真


总结

线性均衡器在表现良好的信道上能提供良好的性能,这些信道不表现出频谱零点。另一方面,对于表现出频谱零点的信道,它们不足以完全消除码间串扰,这往往是实际情况。决策反馈均衡器为这个问题提供了一个有效的解决方案,这将在后续文章中给出介绍和仿真。




http://www.mrgr.cn/news/64639.html

相关文章:

  • OpenAI 提示工程指南详解
  • Windows部署rabbitmq
  • 高中数学:统计-随机抽样
  • ECMAScript 新手指南教程
  • ZDS 数字股票 布局全球视野,开启智能金融新篇章
  • 电脑病毒感染
  • 海滨学院班级时光机:回忆录设计与实现
  • MySQL——索引
  • 人人都能看懂的大模型 DPO 数学原理
  • 海的回忆:海滨学院班级记忆录技术实现
  • 分段三次Hermite插值算法及推导过程
  • 个体营业执照经营异常多久解除
  • ts:用加减乘除方法配合展示类的继承(extends)
  • 网站模板有哪些提供比较好的
  • 在平衡中追寻高度:探秘AVL树的自我调节之美
  • PMBOK® 第六版 制定进度计划
  • 青春的海浪:海滨学院班级回忆录项目
  • PSTN是什么?
  • 用visio画功能框图各个问题(竖图 和 竖排文字 相互匹配问题)
  • 分布式光伏系统管理捷径——借助专业软件
  • OpenAI + asyncio 异步调用
  • 稻米分类和病害检测数据集(猫脸码客 第237期)
  • # Easysearch 与 LLM 融合打造高效智能问答系统
  • unet中的attn_processor的修改(用于设计新的注意力模块)
  • 项目自动化构建工具——make与Makefile详解
  • Qt中的Model与View 3:从样例出发理解QStringListModel和QListView