首页 文章

带通滤波器matlab解释

提问于
浏览
3

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

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 回答

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

相关问题