首页 > 其他分享 >(57)MATLAB使用迫零均衡器和MMSE均衡器的BPSK调制系统仿真

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

时间:2024-11-03 09:47:42浏览次数:3  
标签:仿真 MMSE 57 EbN0 信道 迫零 均衡器

文章目录


前言

本文给出仿真模型与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,弱ISI

nTaps = 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建模与性能仿真


总结

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



标签:仿真,MMSE,57,EbN0,信道,迫零,均衡器
From: https://blog.csdn.net/weixin_45333185/article/details/143351921

相关文章

  • P3577 [POI2014] TUR-Tourism
    P3577[POI2014]TUR-Tourism可能很多人看到这道题既可以从父亲更新到儿子,又可以从儿子更新到父亲的时候,很多人都跟我一样是这样的:于是这里分享一下我的一种思考。直径\(\le10\),可以先求出DFS生成森林,这样树高不超过\(10\)且没有横叉边,我们使返祖边是通过祖先限制后代,......
  • ME5701 Linear stability analysis of Mathieu equation
    AssignmentforPart2inME5701——LinearstabilityanalysisofMathieuequation—Duetime:23:59:59,Nov.15th,2024ThisassignmentwillguideyoutostudythestabilitypropertiesoftheMathieuequation.Pleasereadthroughcarefullytheproblemdescript......
  • CF573D Bear and Cavalry
    原题链接比较简单的\(\text{dp}\)题。看见题目的\(\sumw_ih_i\)式子,很容易想到排序不等式,所以我们先对\(w,h\)排序,然后分情况讨论。若\(w_i,h_i\)对应的编号不相等,肯定是把它们配对。若\(w_i,h_i\)对应的编号相等,考虑这样的连法:若是这种情况也不合法,或者它......
  • E74 树形DP P4657 [CEOI2017] Chase
    视频链接:E74树形DPP4657[CEOI2017]Chase_哔哩哔哩_bilibili  P4657[CEOI2017]Chase-洛谷|计算机科学教育新生态(luogu.com.cn)//树形DPO(n*m)#include<bits/stdc++.h>#defineLLlonglongusingnamespacestd;constintN=100010,M=110;intidx,he......
  • 悉硕512GB固态硬盘RTS5766DL量产工具开卡成功教程,量产部落RTS5766 SSV6量产工具,支持EC
    固态硬盘坏了怎么办,比如不认盘、无法分区、无法格式化、反应慢、读写蓝屏死机无响应等等比较严重的故障,这时候该怎么办呢?难道只能扔掉重新买一个吗?实际上是完全可以自己修好的,从量产部落下载量产工具,使用量产工具对固态硬盘进行开卡,基本可以修复固态硬盘90%以上的故障问题。手中这......
  • rk3576 查询npu频率
    rk3576查询npu频率cat/sys/kernel/debug/rknpu/freq设置NPU工作频率:#以RK3588为例#查看NPU可用频率cat/sys/class/devfreq/fdab0000.npu/available_frequencies#设置NPU频率,例如,设置1GHzecho1000000000>/sys/kernel/debug/rknpu/freq   (1)查询NPU......
  • SpringBoot社区养老综合服务平台g57pn--程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,志愿者,工作人员,社区展示,费用缴纳,房间信息,请假信息,志愿者分配,志愿者任务,工作人员任务,任务完成,工资绩效开题报告内容一、研究背景随着人口老龄化......
  • 代码随想录算法训练营第十三天| 110.平衡二叉树、257. 二叉树的所有路径、404.左叶子
    110.平衡二叉树题目链接:.-力扣(LeetCode)文章链接:代码随想录视频链接:后序遍历求高度,高度判断是否平衡|LeetCode:110.平衡二叉树_哔哩哔哩_bilibili《代码随想录》算法公开课开讲啦!快来打卡!本期视频的文字讲解版在「代码随想录」刷题网站:programmercarl.com,这里刷题顺序,详......
  • 易优cms系统报错unserialize(): Error at offset 0 of 1571 bytes_Eyoucms系统报错问
    解决方案清除缓存通过FTP访问服务器。导航至 /data/runtime 目录。删除该目录下的所有文件和文件夹。升级系统登录后台。检查是否有可用的更新。升级到最新版本,以确保已知的问题已被修复。检查代码如果问题仍然存在,可以检查 \corelibrary\think\cache\dri......
  • [57] (多校联训) A层冲刺NOIP2024模拟赛15
    A.追逐游戏一个非常暴力的想法是直接求出最短路径\(S\),然后对\(S\)上的点,比较\(dis_{s,S_i}\)和\(dis_{s',S_i}\)的大小,如果抓捕的人先到就符合条件实际上,这个符合条件的路径是单调的,即在最短路径上存在一个断点,断点靠近起点的一侧总不可达,靠近终点的一侧总是可达的证明......