2013-12-14 102 views
3

我想了解帶通濾波器,並且我理解了理論或基本思想。但是,我一直在努力處理下面的代碼,但是我能夠完全理解它,並將它塑造成我想要的工作。帶通濾波器matlab說明

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.如果你能幫我解釋一下,我覺得我可以完成它。

預先感謝

回答

2

您從freqz函數得到具有每樣品弧度聯信和從0延伸到pi在W變量。要獲得赫茲的頻率,你需要提供的採樣率,FS,你也想點的數量,N

更換您的通話與這些線freqz:

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