数字信号处理实验四(FIR数字滤波器设计)

news2024/11/26 0:46:35
  •  FIR数字滤波器设计(2学时)
    1. 要求:
      1. 设计一个最小阶次的低通FIR数字滤波器,性能指标为:通带0Hz~1500Hz,阻带截止频率2000Hz,通带波动不大于1%,阻带波动不大于1%,采样频率为8000Hz;
      2. 用一个仿真信号来验证滤波器的正确性(注意:要满足幅度要求和线性相位特性)。
    2. 目的:
      1. 利用学习到的数字信号处理知识解决实际问题;
      2. 了解线性相位滤波器的特殊结构;

实验报告:

一、实验内容

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 源程序代码

%FIR 低通滤波器:1.设计低通滤波器并绘制图像 2.生成复合信号并绘制时域和频域 3.应用滤波器并绘制时域频域
%编辑人:贾雯爽
%目的:掌握模拟低通滤波器设计流程及影响参数
%最后更新时间:2024/06/05 


%%1.设计低通滤波器并绘制图像
%%参数设置

fs = 8000;        %设置采样频率 8k
Fp = 1500;       %通带截止频率
Fs = 2000;       %阻带截止频率
Rs = 0.01;       %阻带衰减
Rp = 0.01;       %通带波纹

figure
[n, fo, mo, w]  = remezord([1500 2000], [1 0], [0.01 0.01], 8000);
b = remez(n, fo, mo, w);

%[h w] = freqz(b, 1, 128);

%plot(w/pi, abs(h));

freqz(b, 1, 128);



N=1024;                %采样点数      
n=0:N-1;          
t=0:1/fs:1-1/fs;          %时间序列
f=n*fs/N;               %频率序列



%%2.生成复合信号并绘制时域和频域
Signal_Original=sin(2*pi*25*t);      %信号25Hz正弦波
Signal_Noise1=sin(2*pi*2000*t);      %噪声50Hz正弦波
Signal_Noise2=sin(2*pi*3000*t);      %噪声100Hz正弦波
Signal_Noise3=sin(2*pi*4500*t);      %噪声150Hz正弦波


Mix_Signal=Signal_Original+Signal_Noise1+Signal_Noise2+Signal_Noise3;  %将信号Signal_Original和Signal_Original合成一个信号进行采样               

figure
subplot(211);
plot(t, Mix_Signal);   %绘制信号Mix_Signal的波形                                                 
xlabel('时间');
ylabel('幅值');
title('原始信号');
grid on;
  

f1 = Fs/N*(0:(N/2));
subplot(212);
y=fft(Mix_Signal, N);     %对信号 Mix_Signal做FFT 
P2 = abs(y/N);%取模值 根FFT公式
P1 = P2(1:N/2+1);%自变量只取前半部分
P1(2:end-1) = 2*P1(2:end-1);%单边频谱值为双边频谱值的两倍(除原点外,原点值不变)
plot(f1,P1);
xlabel('频率/Hz');
ylabel('振幅');
title('原始信号FFT');
grid on;

%%3.应用滤波器并绘制时域频域

% 绘制原始信号时域图
figure;  
subplot(3,1,1);  
plot(t, Mix_Signal);  
title('原始信号');  
xlabel('时间 (s)');  
ylabel('幅度');  
grid on;  

%绘制滤波后时域图
Y =filter(b, 1, Mix_Signal);
subplot(3,1,2);  
plot(t, Y);  
title('滤波后的信号');  
xlabel('时间 (s)');  
ylabel('幅度');  
grid on;

%绘制滤波后频域分布图
f1 = Fs/N*(0:(N/2));
subplot(313);
y=fft(Y, N); 
P2_2 = abs(y/N);%取模值 根FFT公式
P1_2 = P2_2(1:N/2+1);%自变量只取前半部分
P1_2(2:end-1) = 2*P1_2(2:end-1);%单边频谱值为双边频谱值的两倍(除原点外,原点值不变)
plot(f1,P1_2,"LineWidth",1) 
title("滤波后的频域分布图")
xlabel("f (Hz)")
ylabel("|P1_1(f)|")


4 实验结果

5实验结果分析

在分析实验结果时,滤波器的频率响应满足设计要求,特别是通带波动和阻带波动是否在给定的阈值内。同时,我们也验证了滤波后信号的波形或频谱如预期那样,通带内的信号得以保留,而阻带内的信号被抑制。此外,我们还验证了滤波器的线性相位特性,确保在所有频率上相位响应保持一致。

五、实验总结

通过本次实验,我们成功设计了一个满足性能指标的低通FIR数字滤波器,并通过仿真信号验证了其性能。实验结果表明,我们设计的滤波器能够有效地保留通带内的信号并抑制阻带内的信号,同时保持线性相位特性。这对于处理实际信号中的噪声和干扰具有重要意义。

然而,在实验过程中我们也发现了一些可以改进的地方。例如,滤波器的阶数对滤波性能有很大影响,我们需要通过尝试不同的阶数来找到最优解。此外,我们还可以尝试使用不同的设计方法或优化算法来进一步提高滤波器的性能。这些改进措施将为我们未来的实验和研究提供有价值的参考。


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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JeecgBoot新建模块

引言 jeecg-boot设置了demo, system等默认模块。在二次开发中,常常需要进行模块扩展。比如新增一个订单模块或支付模块。如何准确的新增模块,在此文进行记录。 步骤 新建模块 在项目点击右键,新建模块。 如下图。 注意:报名需…

arco disign vue 日期组件的样式穿透

问题描述: 对日期组件进行样式穿透. 原因分析: 如图,日期组件被展开时它默认将dom元素挂载到body下, 我们的页面在idroot的div 里层, 里层想要穿透外层是万万行不通的. 解决问题: 其实官网提供了参数,但是并没有提供例子, 只能自己摸索着过河. 对于日期组件穿透样式,我们能…

来自Claude官方的提示词库,支持中文!建议收藏!

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,所以创建了“AI信息Gap”这个公众号,专注于分享AI全维度知识,包括但不限于AI科普,AI工具测评,AI效率提升,AI行业洞察。关注我,AI之…

KV260视觉AI套件--开箱报告

目录 1. 简介 2. 与 Zynq 的渊源 3. 官方的入门步骤 4. 总结 1. 简介 传统的ARMFPGA或DSPFPGA控制方案在软件、逻辑、硬件以及系统工程的协同调试中,往往需要团队成员之间严格按照预定计划和接口规范进行分工合作,这不仅增加了测试过程的复杂性&…

ubuntu16.04上搭建qt开发环境

安装qt 下载qt在linux下的安装包qt-opensource-linux-x64-5.8.0.run;将安装包拷贝到ubuntu16.04上;执行如下命令进行安装,注意:安装前先断开虚拟机的网络,这样就避免了注册账户的操作 基本上一路按“next”键&#xf…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 数字排列游戏(200分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 &#x1f…

第5章 传输层

王道学习 考纲内容 (一)传输层提供的服务 传输层的功能:传输层寻址与端口;无连接服务和面向连接服务 (二)UDP UDP数据报;UDP检验 (三)TCP …

坑——python的redis库的decode_responses设置

python的redis库查询返回的值默认是返回字节串,可以在redis.Redis()方法中通过设置decode_responses参数,让返回值直接是字符串; 查询返回字节串是因为Redis()方法中decode_responses默认值是False: 设置decode_responses为True就…

mac Canon打印机连接教程

官网下载安装驱动: 选择打印机类型和mac系统型号下载即可 Mac PS 打印机驱动程序 双击安装 系统偏好设置 点击“”添加: OK可打印玩耍!! 备注: 若需扫描,下载扫描程序: 备注:…

java 统计xmind的结点数(测试用例case数)

mac电脑解压出来的xmind的数据主要在content.json上 开头结尾有[],里面是json import org.json.JSONArray; import org.json.JSONObject; import java.io.*; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream;public class XMindLeafCounter2 {public stat…

小程序驾校预约系统的设计

管理员账户功能包括:系统首页,个人中心,学员管理,教练管理,驾校信息管理,驾校车辆管理,教练预约管理,考试信息管理 微信端账号功能包括:系统首页,驾校信息&am…

【面试干货】与的区别:位运算符与逻辑运算符的深入探讨

【面试干货】&与&&的区别:位运算符与逻辑运算符的深入探讨 1、&:位运算符2、&&:逻辑运算符3、&与&&的区别 💖The Begin💖点点关注,收藏不迷路💖 & 和 …

赛目科技三度递表:净利率及资产回报率不断下滑,经营成本越来越高

《港湾商业观察》施子夫 5月29日,北京赛目科技股份有限公司(以下简称,赛目科技)第三次递表港交所,公司拟主板上市,独家保荐机构为光银国际。 公开信息显示,赛目科技此前曾于2022年12月&#x…

使用li标签实现数据列表效果(鼠标移动和选中时均有阴影效果)

文章目录 一、最终效果&#xff1a;二、完整页面代码 一、最终效果&#xff1a; 选中的数据有阴影效果&#xff0c;鼠标移动时也有阴影效果 二、完整页面代码 list-style-type: none是去掉无序标签前的点的样式 <template><div><div class"my-new-lis…

智能农业技术:物联网、无人机与机器人引领的绿色革命

在这个信息化与智能化并行的时代&#xff0c;农业——这个最古老的人类产业&#xff0c;正经历一场前所未有的科技变革。物联网&#xff08;IoT&#xff09;、无人机&#xff08;UAV&#xff09;和机器人技术的深度融合&#xff0c;正逐步构建起一个高效、精准、可持续的现代农…

判断时间序列中的元素是否为:年初、年末、季初、季末

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 判断时间序列中的元素是否为&#xff1a; 年初、年末、季初、季末 Series.dt.is_year_start Series.dt.is_year_end Series.dt.is_quarter_start Series.dt.is_quarter_end 选择题 关于以下…

人工智能设备pbootcms网站模板源码

模板介绍 人工智能行业发展趋势不断攀升逐渐成为了新业态&#xff0c;小编精心为大家收集整理了一款HTML5人工智能设备pbootcms网站模板整站源码下载&#xff0c;可帮助您快速建站以展示企业的产品与业务&#xff0c;响应式自适应设计也会适配所有浏览设备。 模板截图 源码下…

vue2(vue-cli3x[vue.config.js])使用cesium新版(1.117.0)配置过程

看来很多解决方法都没有办法&#xff0c;最后终于。呜呜呜呜 这里我用的是vue-cli去搭建的项目的vue2 项目&#xff0c;其实不建议用vue2搭配cesium。因为目前cesium停止了对vue2的版本更新&#xff0c;现在默认安装都是vue3版本&#xff0c;因此需要控制版本&#xff0c;否则…

kafka-Stream详解篇(附案例)

文章目录 Kafka Stream 概述Kafka Stream 概念Kafka Stream 数据结构入门案例一需求描述与分析配置KafkaStream定义处理流程声明Topic接收处理结果发送消息测试 入门案例二需求描述与分析定义处理流程接收处理结果声明Topic 更多相关内容可查看 Kafka Stream 概述 Kafka Strea…

qt实现打开pdf(阅读器)功能用什么库比较合适

关于这个问题&#xff0c;网上搜一下&#xff0c;可以看到非常多的相关博客和例子&#xff0c;可以先看看这个总结性的博客&#xff08;https://zhuanlan.zhihu.com/p/480973072&#xff09; 该博客讲得比较清楚了&#xff0c;这里我再补充一下吧&#xff08;qt官方也给出了一些…