【问题标题】:Bandpass filter matlab explanation带通滤波器matlab解释
【发布时间】:2013-12-14 05:41:42
【问题描述】:

我正在尝试学习带通滤波器,并且我理解了理论或基本思想。但是,我一直在尝试使用以下代码,但能够完全理解它并将其塑造成我想要的工作方式。

    clc;
    close all;
    clear all;

    n=0:300000;
    delay = 10000;
    wc=.2*pi;
    w0=.4*pi;

    hLP=(wc/pi)*sinc((wc/pi)*(n-delay));
    hBP=2*cos(n*w0).*hLP;
    [Happrox,W]=freqz(hBP,1); 
    plot(W,abs(Happrox));
    xlabel('frequency'); 
    ylabel('magnitude');
    title('Band pass Filter');

我在运行这段代码时得到了以下过滤器设计

我希望 X 轴延伸到 255,我可以使用 xlim 来实现。现在,我在改变带通的频率限制时遇到了问题。这就是为什么我觉得我需要理解代码。请帮我解释一下。

wcw0 是要更改以更改频段的值,但无法获得我需要的频率的确切值,例如从 12 到 250。如果你能帮助我有一个解释,我觉得我可以完成它。

提前致谢

【问题讨论】:

    标签: matlab filter


    【解决方案1】:

    您从 freqz 函数获得的 W 变量具有每个样本的弧度单位,并且从 0 扩展到 pi。要获得以 Hz 为单位的频率,您需要提供采样率 Fs 以及所需的点数 N。

    将您对 freqz 的调用替换为以下行:

    N = 200; % 200 points in frequency vector
    Fs = 100; % 100 Hz sample rate
    [Happrox,W]=freqz(hBP,1, N, Fs);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-03
      • 1970-01-01
      • 2014-07-03
      • 2015-10-22
      相关资源
      最近更新 更多