假设我们有采样频率为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));
设计二阶Butterworth滤波器,截止频率为400,然后是该命令
y = filter(b,a,swn);
过滤给定信号,但不是一个截止频率,我需要15-20的范围,那么如何应用带通滤波器?
答案 0 :(得分:1)
实际上,您可以使用相同的函数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过滤器的需求。但是,Butterworth滤波器具有无限的脉冲响应,正如您可以看到函数butter()
返回带有多个元素的向量a
这一事实。