如何使用Filter Design设计低通、高通、带阻数字滤波器。
文章目录
前言
一、低通滤波器
二、高通滤波器
三、带阻滤波器
前言
使用Matlab自带的Filter Design APP可以方便、快捷地设计各种FIR/IIR数字滤波器,并且能输出数字滤波器的阶数、幅度响应、相位响应等。
使用一个由10Hz,20Hz,30Hz的正弦波信号叠加的信号作为样本。
一、低通滤波器
打开Filter Design,想要设计一个低通滤波器,滤出低于20Hz频率的信号,如下设计参数后,点击【Desigin Filter】后可以查看到设计的滤波器的幅度响应。点击【File】-【Save Session As】保存设计好的Fda格式的文件,里面存储滤波器的参数。
clc
clear all
fs = 100;
N = 1000;
n = 0:N-1;
t = n/fs;
f = n*fs/N;
Y = sin(2*pi*10*t) + 3*sin(2*pi*20*t) + 5*sin(2*pi*30*t);
importfile('...\LowPass20.fda');%此处需要修改fda文件路径
Numerator = s.current_filt.Numerator;
Y_filter = filter(Numerator,1,Y);
mag_Y = abs(fft(Y));
mag_Y_filter = abs(fft(Y_filter));
figure
subplot(221)
plot(t,Y)
subplot(222)
plot(f,mag_Y)
subplot(223)
plot(t,Y_filter)
subplot(224)
plot(f,mag_Y_filter)
左侧是滤波前后的信号在时域上的显示,右侧是频谱图。可以看出,20和30Hz的信号成分被滤除了。
二、高通滤波器
同上文所说低通滤波器,需要根据实际需要设计滤波器参数。
三、带阻滤波器
需要注意的是,带阻滤波器与低通、高通滤波器的设计后的数据结构不一样,代码中需要修改。需要把原来的filter函数更改成sosfilt。
并且,滤波器的Fpass1和Fstop1以及Fpass2和Fstop2之间需要留足够的过渡带,否则设计出的滤波器阶数会很高,增加过多的计算成本,需要结合实际需要合理选择。
文章来源:https://www.toymoban.com/news/detail-504719.html
clc
clear all
fs = 100;
N = 1000;
n = 0:N-1;
t = n/fs;
f = n*fs/N;
Y = sin(2*pi*10*t) + 3*sin(2*pi*20*t) + 5*sin(2*pi*30*t);
importfile('...\BandStop20Hz.fda');
sos = s.current_filt.sosMatrix;
Y_filter = sosfilt(sos,Y);
mag_Y = abs(fft(Y));
mag_Y_filter = abs(fft(Y_filter));
figure
subplot(221)
plot(t,Y)
subplot(222)
plot(f,mag_Y)
subplot(223)
plot(t,Y_filter)
subplot(224)
plot(f,mag_Y_filter)
文章来源地址https://www.toymoban.com/news/detail-504719.html
到了这里,关于【Matlab】如何使用Filter Design设计低通、高通、带阻滤波器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!