(51)MATLAB迫零均衡器系统建模与性能仿真

文章目录

  • 前言
  • 一、迫零均衡器性能仿真说明
  • 二、迫零均衡器系统建模与性能仿真代码
    • 1.仿真代码
    • 2.代码说明
    • 3.迫零均衡器zf_equalizer的MATLAB源码
  • 三、仿真结果
    • 1.信道的冲击响应
    • 2.频率响应
    • 3.迫零均衡器的输入和输出


前言

使用MATLAB对迫零均衡器系统进行建模仿真,完整的MATLAB设计源代码形式给出设计方法和仿真结果。


一、迫零均衡器性能仿真说明

首先定义信道的冲激响应,对其进行符号间隔采样得到离散信道的冲激响应模型。

其次,为给定信道设计迫零均衡器,找到给定信道冲激响应的均衡器系数。

然后,(1)使用均衡器对接收信号的均衡,(2)计算信道和均衡器的总体响应(即查看的是均衡器对信道的补偿结果)。

最后,给出仿真的结果画图。

设定信道响应长度为L=13,因此需要长度N>L的迫零强制滤波器。仿真中,将迫零滤波器的长度固定为N=14。

下面给出仿真模型的MATLAB源代码。

二、迫零均衡器系统建模与性能仿真代码

1.仿真代码

代码如下:

%% 系统参数
nSamp = 5;                % 每个符号的采样数
fs = 100;                 % 采样率
Ts = 1/fs;                % 采样间隔
Tsym = nSamp*Ts;          % 符号宽度,也是符号间隔
%% 信道——定义信道的冲激响应
% 1.采样间隔信道响应(连续时间信道模型)
k = 6;                                           % 信道响应使码元波形前后各扩展到第k个码元
t = -k*Tsym:Ts:k*Tsym;                           % 信道的时基定义在[-kTsym,+kTsym]h_t = 1./(1+(0.6*t/Tsym).^2);                    % 定义一种信道模型,该信道模型可替换为其他所需模型

sigma = 0.001;                                   % AWGN信道噪声的标准差
noise = sigma*randn(1,length(h_t));              % AWGN信道噪声

h_t = h_t + noise;                               % 信道响应加高斯白噪声

% 2.符号间隔信道响应(离散时间信道模型)
h_k = h_t(1:nSamp:end);
t_k = t(1:nSamp:end);                            % 符号采样时刻
% L = length(t_k);                                 % 信道频率响应长度

figure()
plot(t,h_t,'LineWidth',1.5)                      % 每个采样点时刻的信道响应,采样间隔
grid on
hold on
stem(t_k,h_k,'r','LineWidth',1.5)                % 每个符号最佳采样时刻的信道响应,符号间隔
legend('continuous-time model','discrete-time model')
title('Channel impulse response')
xlabel('Time (s)')
ylabel('Amplitude')
% xlim([-0.3 0.3])
ylim([0 1.1])
%% 迫零均衡器设计
nTaps = 14;                                      % 均衡滤波器所需的抽头数量
delay = 13;                                      % 设定的均衡器延时

% 为给定信道设计迫零均衡器,找到给定信道冲激响应的均衡器系数
% [w,error,k0] = zf_equalizer(h_k,nTaps,delay);      % 使用设定的均衡器延时
[w,error,k0] = zf_equalizer(h_k,nTaps);              % 使用均衡器最优延时

%% 均衡滤波
r_k = h_k;                                       % 以信道响应作为输入测试均衡器
d_k = conv(w,r_k);
h_sys = conv(w,h_k);

% 信道、均衡器和整个系统的频率响应
[h_channel, w1] = freqz(h_k);                    % 信道的频率响应
[h_equalizer, w2] = freqz(w);                    % 均衡器的频率响应
[h_system ,w3] = freqz(h_sys);                   % 整个系统的频率响应

%% 画图
% (1)频率响应
figure(); 
plot(w1/pi,20*log(abs(h_channel)/max(abs(h_channel))),'g','LineWidth',1.5);
hold on;
plot(w2/pi,20*log(abs(h_equalizer)/max(abs(h_equalizer))),'r','LineWidth',1.5); 
plot(w3/pi,20*log(abs(h_system)/max(abs(h_system))),'b','LineWidth',1.5);
grid on
legend('信道频响','迫零均衡器频响','系统整体频响','Location','south');
title('频率响应');
ylabel('幅度(dB)');
xlabel('归一化频率(x \pi rad/sample)');

% (2)均衡器输入与输出
figure();                         % 绘制均衡器输入和输出(时域响应)
subplot(2,1,1);
% stem(0:1:length(r_k)-1,r_k); 
stem(r_k,'LineWidth',1.5); 
grid on;
title(['均衡器输入(序列长度L =',num2str(length(r_k)),')']);
xlabel('Samples');
ylabel('Amplitude');
subplot(2,1,2);
% stem(0:1:length(d_k)-1,d_k);
stem(d_k,'LineWidth',1.5);
grid on;
title(['均衡器输出(均衡器抽头数nTaps=',num2str(nTaps), ...
       ',均衡器输出序列长度=nTaps+L-1=',num2str(nTaps+length(r_k)-1),')']);
xlabel('Samples');
ylabel('Amplitude');

2.代码说明

代码中以下两行的输入数值和计算结果的数值完全相等:
d_k = conv(w,r_k);
h_sys = conv(w,h_k);

虽然这两行代码计算结果数值上完全相同,但其所代表的意义却完全不同:

第一行表示均衡器对接收信号的均衡;
第二行表示信道和均衡器的总体响应,用于查看并评估均衡器对信道的补偿效果。

3.迫零均衡器zf_equalizer的MATLAB源码

上述仿真中使用了迫零均衡器zf_equalizer的MATLAB,其源码见:
(49)MATLAB实现迫零均衡器原理与代码

三、仿真结果

1.信道的冲击响应

在这里插入图片描述

2.频率响应

在这里插入图片描述

3.迫零均衡器的输入和输出

在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/907040.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端请求后端接口报错(blocked:mixed-content),以及解决办法

报错原因:被浏览器拦截了,因为接口地址不是https的。 什么是混合内容(Mixed Content) 混合内容是指在同一页面中同时包含安全(HTTPS)和非安全(HTTP)资源的情况。当浏览器试图加载非…

python 包和模块

一、模块 一个.py 文件就是一个模块,模块是含有一系列数据,函数,类等的程序。 1、模块导入 1.1、impotrt 模块名称 [ as 别名] import nunpy as np 1.2、form 模块名 import 模块内属性名 [ as 别名] from datetime import datetime as d…

Git下载-连接码云-保姆级教学(连接Gitee失败的解决)

Git介绍 码云连接 一、Git介绍 二、Git的工作机制 下载链接:Git - 下载软件包 三、使用步骤 创建一个wss的文件夹,作为‘工作空间’ 四、连接码云账号 五、连接Gitee失败的解决方法 一、Git介绍 Git是一个免费的、开源的分布式版本控制…

https和http的区别,及HTTPS的工作流程

HTTP(HyperText Transfer Protocol)和HTTPS(HyperText Transfer Protocol Secure)都是超文本传输协议,但它们之间的关键区别在于安全性。 安全性: HTTP:数据以明文传输,没有加密&…

【Python · Pytorch】人工神经网络 ANN(上)

【Python Pytorch】人工神经网络 ANN(上) 0. 生物神经网络1. 人工神经网络定义2. 人工神经网络结构2.1 感知机2.2 多层感知机2.3 全连接神经网络2.4 深度神经网络 2. 训练流程※ 数据预处理 (Data Preprocessing) 3. 常见激活函数3.1 Sigmoid / Logisti…

基本查询【MySQL】

文章目录 基本查询插入时是否更新替换查询指定列查询查询字段为表达式为查询结果指定别名结果去重where条件NULL 的查询 结果排序筛选分页结果UpdateDelete截断表聚合函数分组(group by)having && where 基本查询 建表 mysql> create table Student (-> id int…

pandas——数据结构

一、series (一)创建series import pandas as pd#1.使用列表或数组创建Series # 使用列表创建Series,索引默认从0开始 s1 pd.Series([1, 2, 3]) print(s1) # 使用列表和自定义索引创建Series s2 pd.Series([1, 2, 3], index[a, b, c]) pr…

算法妙妙屋-------1.递归的深邃回响:C++ 算法世界的优雅之旅

前言: 递归是一种在算法中广泛应用的思想,其主体思想是通过将复杂的问题分解为更简单的子问题来求解。具体而言,递归通常包括以下几个要素: 基本情况(Base Case):每个递归算法必须有一个或多个…

禾川HCQ1控制器程序编译报错如何解决

1、第一次打开用户程序 2、提示库未安装 3、安装库文件 4、脉冲轴库未安装 5、没有错误 去禾川自动化官网,把可以安装的包和库都安装下,程序编译就没有错误了。 6、下载相关包文件

HarmonyOS:@Watch装饰器:状态变量更改通知

Watch应用于对状态变量的监听。如果开发者需要关注某个状态变量的值是否改变,可以使用Watch为状态变量设置回调函数。 说明 从API version 9开始,该装饰器支持在ArkTS卡片中使用。 从API version 11开始,该装饰器支持在元服务中使用。 一、概…

Windows如何查看自己网卡的MAC地址?

本章教程,主要介绍如何在Windows查看自己的网卡mac地址。 一、查询MAC地址方法 打开使用PowerShell,运行以下命令即可查询到自己的网卡MAC地址。 Get-NetAdapter | Select-Object Name, MacAddress二、MAC地址是什么 MAC地址(Media Access Co…

Unknown at rule @tailwindscss(unknownAtRules)

一、前言 整合 tailwindcss 后,发现指令提示警告 Unknown at rule tailwindscss(unknownAtRules),其实是 vscode 无法识别 tailwindscss 指令,不影响使用,但是对于我这种有编程洁癖的人来说,有点膈应。 二、解决方案…

Python 实现深度学习模型预测控制--预测模型构建

链接:深度学习模型预测控制 (如果认为有用,动动小手为我点亮github小星星哦),持续更新中…… 链接:WangXiaoMingo/TensorDL-MPC: DL-MPC(deep learning model predictive control) is a software toolkit…

安宝特案例 | AR技术在院外心脏骤停急救中的革命性应用

00 案例背景 在院外心脏骤停 (OHCA) 的突发救援中,时间与效率直接决定着患者的生命。传统急救模式下,急救人员常通过视频或电话与医院医生进行沟通,以描述患者状况并依照指令行动。然而,这种信息传递方式往往因信息不完整或传递延…

书生大模型第一关Linux基础知识

任务一:完成SSH连接与端口映射并运行hello_world.py 1.SSH及其端口映射 2.在VSCode中安装插件: 3.创建开发机 最后点击创建,然后可能需要等待一段较长的时间,大概需要5分钟左右,如果需要排队则更长时间 然后选择…

openGauss数据库-头歌实验1-5 修改数据库

一、查看表结构与修改表名 (一)任务描述 本关任务:修改表名,并能顺利查询到修改后表的结构。 (二)相关知识 为了完成本关任务,你需要掌握: 1.如何查看表的结构; 2.如…

【机器学习】26. 聚类评估方法

聚类评估方法 1. Unsupervised Measure1.1. Method 1: measure cohesion and separationSilhouette coefficient Method 2:Correlation between two similarity matricesMethod 3:Visual Inspection of similarity matrix 2. Supervised measures3. 决定…

基于stm32单片机的智能循迹小车

功能描述 STM32单片机循迹避障蓝牙控制温度采集烟雾采集火焰探测声光报警按键调节OLED显示 1. STM32单片机为控制核心 2. 通过ds18b20传感器测量环境温度 3. 通过mq-2烟雾传感器测量环境中的烟雾浓度 4. 温度阈值和烟雾浓度阈值可以通过按键进行调节 5. 当温度或者烟雾浓度超过…

【图解版】力扣第70题:爬楼梯

推理出状态表达式 f(5)表示到达第5层,所有可能的方法数。 到达第5层,有可能是从第4层走一步上来,也有可能是从第3层走两步上来。所以我们可以慢慢延伸,画出上面👆🏻的图。 从图中,我们可以看到…

MySQL基础(三)

目录 一. 插入内容insert 1.1 默认插入 1.2 指定某些列插入数据 1.3 一次插入多行 1.4 insert 插入时间 二. 查询数据select(比较复杂) 2.1 全列查询 2.2 指定列查询 2.3 查询字段为表达式 2.4 别名 as 2.5 去重查询 distinct 2.6 排序…