matlab制作数字滤波器(带通滤波器)

本文介绍了如何使用MATLAB的fdatool创建一个130-180Hz带通滤波器,滤波器阶数为250,并采用汉明窗截短。通过滤波器参数与数字信号卷积,滤除了50Hz和220Hz信号,保留了150Hz信号。实验结果显示了滤波前后的频谱和时域对比,证明了滤波效果。
摘要由CSDN通过智能技术生成

一、目的

使用matlab中自带的工具fdatool制作带通滤波器,对数据进行滤波。

二、过程

在这里插入图片描述
如图,使用该工具制作了一个带通滤波器,频率为130-180Hz,使用汉明窗截短,滤波器的阶数为250。

滤波器的冲击响应如下图

在这里插入图片描述
将生成的滤波器export,可得到滤波器的参数。
在这里插入图片描述

将滤波器参数与输入数字信号的序列作卷积,便得到了滤波后的结果!

三、实验结果

(1)滤波前后信号频谱图的变化

在这里插入图片描述
可以看到,50Hz和220Hz的信号被滤除,150Hz信号得以保留。

(2)滤波前后时域变化对比图:

在这里插入图片描述

四、代码

代码下载链接

五、参考文章

[1]现代通信原理A.2:FIR低通滤波器设计
[2]基于MATLAB的filter的使用,低通、带通和高通滤波器设计

MATLAB带通滤波代码的编写主要涉及到以下几个步骤: 1. 确定滤波器的类型和特性:通常有无限冲激响应(IIR)和有限冲激响应(FIR)两种类型的滤波器。根据需求选择合适的滤波器类型,并确定其带通滤波器的通带和阻带频率范围。 2. 设计滤波器:使用MATLAB提供的信号处理工具箱中的函数来设计滤波器。对于IIR滤波器,可以使用"butter"、"cheby1"或"ellip"等函数进行设计;对于FIR滤波器,可以使用"fir1"或"fir2"等函数进行设计。通过指定通带和阻带频率,以及滤波器阶数或窗函数类型等参数来设计滤波器。 3. 滤波信号:将待滤波的信号输入到设计好的滤波器中进行滤波。使用MATLAB中的"filter"函数,将滤波器的系数矩阵和待滤波信号作为输入,得到滤波后的信号。 4. 可选的后处理:根据需要可以对滤波后的信号进行后处理,如添加窗函数、归一化等操作。 下面是一个具体的MATLAB带通滤波代码示例,以使用IIR滤波器为例: ```matlab % 设定滤波器参数 fs = 1000; % 采样率 fc1 = 50; % 通带起始频率 fc2 = 200; % 通带结束频率 order = 4; % 滤波器阶数 % 设计带通滤波器 [b, a] = butter(order, [fc1, fc2]*2/fs, 'bandpass'); % 待滤波信号 t = 0:1/fs:1-1/fs; x = sin(2*pi*100*t) + sin(2*pi*300*t) + sin(2*pi*500*t); % 滤波信号 y = filter(b, a, x); % 绘制滤波前后的信号波形 figure; subplot(2,1,1); plot(t, x); title('原始信号'); subplot(2,1,2); plot(t, y); title('滤波后的信号'); ``` 上述代码中,使用了"butter"函数设计了一个4阶的IIR带通滤波器,其通带范围为50Hz到200Hz。待滤波信号为合成的100Hz、300Hz和500Hz三个正弦信号的叠加,通过"filter"函数进行滤波操作,最后绘制了滤波前后的信号波形。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值