滤波器的使用

本文介绍了滤波器的基本概念,包括低通、高通、带通和带阻滤波器的响应类型,以及IIR和FIR滤波器设计方法。在Matlab中,利用designfilt设计滤波器,并通过fvtool可视化滤波器的幅频特性。文章提供了设计和应用滤波器的示例代码,展示了如何对信号进行滤波处理。
摘要由CSDN通过智能技术生成

滤波器的使用(一)

滤波器主要是在frequency domain 上对信号进行变换

1、滤波器的响应类型

(1)Response Type(响应类型):有低通、高通、带通、带阻等设计。

  • 低通:低于截止频率的信号通过, 主要是对高频信号的过滤
  • 高通:高于某一频率的信号通过, 主要是对低频信号的过滤
  • 带通:某一频率范围内的信号可以通过, 主要是对某一频带范围内的信号过滤
  • 带阻:与带通滤波器相对, 主要是移除给定频带上的信号,又叫做陷波。例如去除50HZ的工频干扰
    不同类型滤波器的幅频响应

(2)Design Method(设计方法):有IIR和FIR两大类。

  • IIR产生的是无限长的脉冲响应;输出不仅与当前的输入有关,也跟当前的输出相关;即前面的输出会影响后面信号,有反馈

  • FIR产生有限长的脉冲响应;输出仅和当前的输入有关

(3)Filter Order(滤波器阶次):阶次可以根据自己的需要设定,也可以直接选择最小阶次。
(4)Frequency Specifications(频率参数):截止频率和通过频率

2、Matlab中滤波器的使用
  • 低通滤波器:lowpass
  • 高通滤波器:highpass
  • 带通滤波器:bandpass
  • 带阻滤波器:bandstop
% 输入参数为:data,[fpass1, fpass2], fs
% 示例
[myFilteredData, bpdf] = bandpass(df, [0.5 40], 250); 
% 返回参数说明
% 滤波之后的数据、bpdf返回数字滤波器的参数
3、滤波器的设计
3.1 滤波器设计的一般方式

Matlab中设计滤波器件可通过designfilt函数实现。参数输入以及详细解释见以下链接:https://www.mathworks.com/help/signal/ref/designfilt.html#bt61003-4

应用示例:

Fs = 44100;
Fp = 1e3;       % bandpass frequency
Fst = 1.4e3;    % stoppass frequency
Ap = 1;         % pass ripple in db
Ast = 95;       % stopband attenstion in db
df = designfilt('lowpassfir', 'PassbandFrequency', Fp,...
    'StopbandFrequency', Fst, 'PassbandRipple', Ap,...
    'StopbandAttenuation', Ast, 'SampleRate', Fs);
% 绘制滤波器的幅频特性
fvtool(df)
dataIn = rand(1000, 1);
dataout = filter(df, dataIn);
plot(dataIn, 'r')
hold on
plot(dataout, 'b')
legend('raw signal', 'filter signal')

参数解释:

  • 返回的df为滤波器的参数设置
  • 使用时需要配合filter或者filtfilt将设计的滤波器的参数输入,同时将待滤波的信号输入,最终得到的返回值即为滤波之后的信号
  • filterfiltfilt的差异体现在前者(filter)会改变原始信号的相位,使信号在时间上出现延时;后者(filtfilt)很好的保留信号的原始特征,不改变原始信号的波形特征。因此该方法又称为零相位滤波。
示例
rng default

x = wform' + 0.25*randn(500,1);
d = designfilt('lowpassfir', ...
    'PassbandFrequency',0.15,'StopbandFrequency',0.2, ...
    'PassbandRipple',1,'StopbandAttenuation',60, ...
    'DesignMethod','equiripple');
y = filtfilt(d,x);
y1 = filter(d,x);

subplot(2,1,1)
plot([y y1])
title('Filtered Waveforms')
legend('Zero-phase Filtering','Conventional Filtering')

subplot(2,1,2)
plot(wform)
title('Original Waveform')
上述示例滤波后的结果对比:

在这里插入图片描述

3.2 滤波器可视化

通过fvtool可视化滤波器的幅频响应图像。带通滤波器幅频响应

终得到的返回值即为滤波之后的信号

fvtool可视化滤波器的幅频响应

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值