假设我们有一个采样频率为100赫兹的信号,我想设计FIR滤波器,以便切掉所有超出频率范围15-20的频率,如果将其转换为归一化频率,我们将得到15/50 = 0.3, 0.4,例如,我知道我可以使用黄油来设计过滤器,例如http://www.emba.uvm.edu/~gmirchan/classes/EE275/Lab5.pdf
但是您能帮我在Matlab中设计带通滤波器吗?请说我们有一些信号s(t),
这个命令
[b a] = butter(2, 400/(fs/2));
设计一个截止频率为400的二阶Butterworth滤波器,然后该命令
y = filter(b,a,swn);
给定信号的滤波器,但我需要一个15-20的范围,而不是一个截止频率,那么如何应用带通滤波器呢?
实际上,butter()
只需提供截止频率的矢量而不是标量,您就可以使用与该功能相同的功能来设计带通滤波器:
% filter design
fs = 100;
f1 = 15;
f2 = 20;
% normalized frequency
w1 = f1 / (fs/2);
w2 = f2 / (fs/2);
% second-order butterworth
[b, a] = butter(2, [w1 w2]);
% filtering
x = randn(1, 10000);
y = filter(b, a, x);
在您的问题中,您正在谈论对FIR滤波器的需求。但是,巴特沃思滤波器具有无限的脉冲响应,从函数butter()
返回一个a
具有多个元素的向量这一事实可以看出。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句