数字信号处理实验一(离散信号及离散系统的MATLAB编程实现)

实验要求:

  • 离散信号及离散系统的MATLAB编程实现(2学时)
    1. 要求:
      1. 编写一程序,输出一定长度(点数),具有一定幅度、(角)频率和初始相位的实(或复)信号序列,如复指数序列;
      2. 利用matlab,求系统y(n)-0.8y(n-1)-0.5y(n-2)=0.7x(n)+0.3(n-1)的零极点。
    2. 目的:
      1. 熟悉MATLAB命令和编辑、运行、调试环境;
      2. 学会编写MATLAB程序(.m文件)

实验报告:

一、实验内容

i.设计一个最小阶次的低通FIR数字滤波器,性能指标为:通带0Hz~1500Hz,阻带截止频率2000Hz,通带波动不大于1%,阻带波动不大于1%,采样频率为8000Hz;

ii.用一个仿真信号来验证滤波器的正确性(注意:要满足幅度要求和线性相位特性)。

二、实验目的

i.利用学习到的数字信号处理知识解决实际问题;

ii.了解线性相位滤波器的特殊结构;

三、涉及实验的相关情况介绍(包含使用软件或实验设备等情况)

Windows系统 Matlab 2022b

四、实验记录

1.原理基础

FIR(有限脉冲响应)滤波器是一种数字滤波器,其脉冲响应在有限的时间内衰减为零。FIR滤波器通过一系列加权系数的线性组合对输入信号进行卷积,以产生输出信号。对于低通FIR滤波器,它允许低频信号通过并抑制高频信号。

线性相位FIR滤波器具有对称或反对称的系数,这保证了滤波器在所有频率上具有相同的相位延迟,这对于避免信号失真非常重要。

设计FIR滤波器时,常用的方法有窗函数法、最小二乘法(如firls函数)和等波纹法(如remez函数)。这些方法通过最小化通带和阻带内的误差来优化滤波器的性能。

2 实验流程

确定滤波器参数:

包括采样频率、通带和阻带截止频率、通带和阻带波动等。

设计FIR滤波器:

使用MATLAB的firls或remez函数设计满足性能要求的FIR滤波器。

生成仿真信号:

创建一个包含通带和阻带频率分量的仿真信号。

应用滤波器:

使用MATLAB的filter函数将设计的FIR滤波器应用于仿真信号。

分析滤波结果

绘制原始信号和滤波后信号的频谱图,检查通带和阻带的波动是否满足要求,并验证滤波器的线性相位特性。

3 源程序代码

%名称:模拟信号采样与重构及频谱分析FFT
%结构:1.模拟信号的采样 2.生成复合信号并绘制时域和频域 3.应用滤波器并绘制时域频域
%编辑人:贾雯爽
%目的:掌握模拟信号的采样、重构和频谱分析
%最后更新时间:2024/06/05 
%模拟信号采样、重构、频谱分析%1.模拟信号的采样(参数设置、创建模拟信号、信号采样、绘制图像)%1.1 设置参数 
Fs = 1000;%采样频率
A = 1;%幅度
f0 = 5;%频率
t = 0:1/Fs:1-1/Fs;%时间向量%1.2 信号生成
x = A*sin(2*pi*f0*t);%1.3 信号采样
Ts = 1/Fs;
t_sample = 0:Ts:1-Ts; % 采样时间点 
x_sample = A*sin(2*pi*f0*t_sample);% 第四步:绘制原始信号和采样信号  
figure;  
subplot(3,1,1);  
plot(t, x);  
title('原始模拟信号');  
xlabel('时间 (s)');  
ylabel('幅度');  subplot(3,1,2);  
stem(t_sample, x_sample, 'filled');  
title('采样信号');  
xlabel('时间 (s)');  
ylabel('幅度');  %2.信号重构(模拟)%2.1 模拟信号重构
t_recon = linspace(0, 1, Fs*10); % 用于重构的更细粒度时间向量  
x_recon = interp1(t_sample, x_sample, t_recon, 'linear'); % 线性插值 %2.2 绘制信号重构
subplot(313);
plot(t_recon, x_recon);
title('重构模拟信号');
xlabel('时间(s)');
ylabel('幅度');%3.频谱分析(fft) 原始信号与分析后信号对比%3.1 对原始信号进行FFT频谱分析
N = length(t);  
X = fft(x, N);  
P2 = abs(X/N);%转换为单边谱
P1 = P2(1:N/2+1);  
P1(2:end-1) = 2*P1(2:end-1);  
f = Fs*(0:(N/2))/N; % 频率向量 % 3.2绘制原始信号的频谱  
figure;  
subplot(211);
plot(f, P1);  
title('原始模拟信号的频谱');  
xlabel('频率 (Hz)');  
ylabel('|P(f)|');  % 3.3对采样信号进行FFT  
N_sample = length(t_sample);  
X_sample = fft(x_sample, N); % 使用与原始信号相同的FFT长度  
%取单边频谱的流程
P2_sample = abs(X_sample/N);  
P1_sample = P2_sample(1:N/2+1);  
P1_sample(2:end-1) = 2*P1_sample(2:end-1);  % 3.4绘制采样信号的频谱  
subplot(212);
plot(f, P1_sample);  
title('采样信号的频谱');  
xlabel('频率 (Hz)');  
ylabel('|P(f)|');  % 程序结束

4 实验结果

5实验结果分析

i. 对于复指数序列,可以观察到序列的周期性、幅度、频率和相位的变化。这些参数对信号分析和处理非常重要。

ii. 通过对系统差分方程零点和极点的分析,可以了解系统的稳定性和动态特性。在本例中,极点都位于单位圆内,说明系统是稳定的。此外,零点的位置可以影响系统的频率响应特性。通过零极点图,可以直观地看到系统的零点和极点在复平面上的位置,从而进一步分析系统的性能。

五、实验总结

本次实验着重点有两个;①熟悉Matlab的使用操作,包括文件建立、路径添加等。②熟练掌握复指数序列的概念并掌握通过差分方程推到H(z),进一步进行零极点分析的过程。

零极点对数字信号处理系统的性能有着重要作用,稳定性,因果性,低通高通等……


原创文章内容,学术不精恐有错漏之处,恳请各位批评指正。如有Matlab代码源文件或其他沟通需要,可通过邮箱(2642610289@qq.com)联系我,特情注意,学业繁忙难以及时回复,敬请理解。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gitee配置ssh教程

生成公钥 执行命令: ssh-keygen -t rsa查看公钥 cat ~/.ssh/id_rsa.pub这个公钥就是要复制粘贴到Gitee中的ssh公钥。 配置Gitee SSH公钥 来到Gitee的ssh公钥中,配置

ONLYOFFICE8.1版本桌面编辑器简单测评

ONLYOFFICE官网链接:在线PDF查看器和转换器 | ONLYOFFICE ONLYOFFICE介绍:https://www.onlyoffice.com/zh/office-suite.aspx OnlyOffice 是一款免费且开源的 Office 协作办公套件,支持桌面端和移动端等多平台,由一家领先的 IT 公…

热管的原理和棒芯的加工

当热管的一端受热时,毛细芯中的液体蒸发汽化,蒸汽在微小的压差下流向另一端,放出热量凝结成液体,液体再靠毛细力(或重力)的作用,沿多孔材料流回蒸发段。如此循环不已,热量便从一端传…

禁止浏览器对input的自动填充和填充提示(适用于谷歌、火狐、Edge(原IE浏览器)等常见浏览器)

目录 1.要解决的问题2.一技能:原生属性,小试牛刀3.二技能:傀儡input,瞒天过海4.三技能:JavaScript出击,直接开大5.九九八十一难,永远还有最后一难 写在前面: 如有转载,务…

labview排错

源代码正常跑,应用程序报这个错,是因为源代码的可以找到项目路径内所有dll的路径,而应用程序只能找到data文件夹的dll文件 解决查看源代码中.net的程序集的路径,复制对应的dll到data文件夹下 在执行developinterface.dll出现labv…

【简单讲解下Fine-tuning BERT,什么是Fine-tuning BERT?】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

线性代数--行列式1

本篇来自对线性代数第一篇的行列式的一个总结。 主要是行列式中有些关键点和注意事项,便于之后的考研复习使用。 首先,对于普通的二阶和三阶行列式,我们可以直接对其进行拆开,展开。 而对于n阶行列式 其行列式的值等于它的任意…

ModuleNotFoundError: No module named ‘_sysconfigdata_x86_64_conda_linux_gnu‘

ModuleNotFoundError: No module named _sysconfigdata_x86_64_conda_linux_gnu 1.软件环境⚙️2.问题描述🔍3.解决方法🐡4.结果预览🤔 1.软件环境⚙️ Ubuntu 20.04 Python 3.7.0 2.问题描述🔍 今天发现更新conda之后&#xff0…

用pycharm进行python爬虫的步骤

使用 pycharm 进行 python 爬虫的步骤:下载并安装 pycharm。创建一个新项目。安装 requests 和 beautifulsoup 库。编写爬虫脚本,包括获取页面内容、解析 html 和提取数据的代码。运行爬虫脚本。保存和处理提取到的数据。 用 PyCharm 进行 Python 爬虫的…

代码随想录-Day43

52. 携带研究材料(第七期模拟笔试) 小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。他需要带一些研究材料,但是他的行李箱空间有限。这些研究材料包括实验设备、文献资料和实验样本等…

基于MongoDB的电影影评分析

项目源码及资料 项目介绍 1、从豆瓣网爬取Top10的电影数据 爬取网址: https://movie.douban.com/top250 1.1 爬取Top10的影视信息 mv_data [] i 0 for x in soup.select(.item):i 1mv_name re.search(>([^<])<, str(x.select(.info > .hd > a > .tit…

Flink 从入门到放弃

0 写在前面 程序员闯荡江湖的一生都在与数据打交道&#xff0c;初入江湖时基于 MySQL 的 CRUD&#xff0c;渐入佳境后利用 Redis 实现查询加速及分布式控制&#xff0c;本质上都是数据处理&#xff1b;无论主动/被动&#xff0c;都在利用数据来达成业务/技术目的。自然而然的&a…

java基于ssm+jsp 多用户博客个人网站

1管理员功能模块 管理员登录&#xff0c;管理员通过输入用户名、密码等信息进行系统登录&#xff0c;如图1所示。 图1管理员登录界面图 管理员登录进入个人网站可以查看&#xff1b;个人中心、博文类型管理、学生博客管理、学生管理、论坛信息、管理员管理、我的收藏管理、留…

CriticGPT: 用 GPT-4 找出 GPT-4 的错误

CriticGPT 是 OpenAI 发布的一个基于 GPT-4 的模型&#xff0c;它可以帮助我们人类 Review 并纠正 ChatGPT 在生成代码时的错误。使用 CriticGPT 审查代码时&#xff0c;有 60% 的概率生成的代码更好更正确。

【计算机网络】期末复习(2)

目录 第一章&#xff1a;概述 第二章&#xff1a;物理层 第三章&#xff1a;数据链路层 第四章&#xff1a;网络层 第五章&#xff1a;传输层 第一章&#xff1a;概述 三大类网络 &#xff08;1&#xff09;电信网络 &#xff08;2&#xff09;有线电视网络 &#xff0…

路由(urls)

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 Django的URL路由流程&#xff1a; l Django查找全局urlpatterns变量&#xff08;urls.py&#xff09;。 l 按照先后顺序&#xff0c;对URL逐一匹…

FreeBSD虚拟化解决之道:高效、安全、灵活的虚拟解决方案全览

FreeBSD下的虚拟化技术 虚拟化软件可让一台计算机同时运行多个操作系统。这种用于个人电脑的系统软件通常涉及一个运行虚拟化软件的宿主机&#xff08;host&#xff09;操作系统&#xff0c;并支持任何数量的客户机&#xff08;guest&#xff09;操作系统。 FreeBSD下的虚拟解…

Docker中修改TiDB数据库密码(类似mysql)

1.Docker容器运行TiDB pingcap/tidb:last 2.登陆容器系统&#xff1a; 3.在容器中安装mysql客户端&#xff1a; 4.空密码登陆TiDB 5.修改TiDB密码并退出 6.使用修改后的密码登陆验证&#xff1a;

基于Spring Boot与Vue的智能房产匹配平台+文档

博主介绍&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐&#xff1a;最热的500个选题…

CocosCreator构建IOS教程

CocosCreator构建IOS教程 添加include: Header Search Paths:拖拽include过来 添加SoundEngine: Header Search Paths: 把SoundEngine POSIX Common 三个文件夹拖拽到里面去