【问题标题】:design bandpass filter in specific range在特定范围内设计带通滤波器
【发布时间】:2014-06-19 23:25:42
【问题描述】:

假设我们有采样频率为 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 的二阶巴特沃斯滤波器,然后是这个命令

y = filter(b,a,swn);

过滤给定信号,但不是一个截止频率,我需要 15-20 的范围,那么如何应用带通滤波器?

【问题讨论】:

    标签: matlab filtering signal-processing


    【解决方案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 滤波器。但是,巴特沃斯滤波器具有无限的脉冲响应,正如您可以从函数 butter() 返回一个包含多个元素的向量 a 中看到的那样。

    【讨论】:

    • 那么我可以使用哪个过滤器?你能告诉我如何应用截止频率向量
    • @datodatuashvili 看到我更新的答案。 Butterworth滤波器没有问题,但如果你真的需要FIR滤波器,请看filter design documentation,我不能告诉你选择哪一个,因为这取决于很多额外的情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    • 2016-08-20
    • 2021-03-08
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多