带通滤波器matlab解释

时间:2013-12-14 05:41:43

标签: matlab filter

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

    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');

运行此代码时,我得到了以下过滤器设计

enter image description here

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

wcw0是要更改频段的值,但无法获得我需要的频率的准确值,例如12到250之间。你可以帮我解释一下,我觉得我可以完成它。

提前致谢

1 个答案:

答案 0 :(得分:2)

从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);