我正在尝试学习带通滤波器,我理解了理论或基本思想。但是,我一直在尝试使用以下代码,但我能够完全理解它并将其塑造成我想要的工作。
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
实现这一点。现在,在改变带通的频率限制时,我遇到了问题。这就是为什么我觉得我需要理解代码。请帮我解释一下。
wc
和w0
是要更改频段的值,但无法获得我需要的频率的准确值,例如12到250之间。你可以帮我解释一下,我觉得我可以完成它。
提前致谢
答案 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);