滤波器的阶数如何确定?

如题所述

N0 = ceil (6.6*pi/ deltaw) + 1; % 按海明窗计算所需的滤波器阶数N0 N=N0+rem (N0,2); % 对于高通滤波器,使其长度N为偶数 wdham = (hamming (N+1))'; %
这里举一个选用海明窗函数设计低通滤波器的例子。

低通滤波器的设计要求是:采样频率为100Hz,通带截至频率为3 Hz,阻带截止频率为5 Hz,通带内最大衰减不高于0.5 dB,阻带最小衰减不小于50 dB。使用海明窗函数。确定N的步骤有:
1,从上表可查得海明窗的精确过渡带宽为6.6pi/N;(在有些书中用近似过渡带来计算,这当然没有错,但阶数增大了,相应也增加计算量。)
2,本低通滤波器的过渡带是:
DeltaW=Ws-Wp=(5-3)*pi/50=.04pi
3,N=6.6pi/DeltaW=6.6pi/.04pi=165
所以滤波器的阶数至少是165。在该帖子中是用理想低通滤波器的方法来计算的,这里用fir1函数来计算,相应的程序有
fs=100; % 采样频率
wp = 3*pi/50; ws = 5*pi/50; deltaw= ws - wp; % 过渡带宽Δω的计算
N = ceil(6.6*pi/ deltaw) + 1; % 按海明窗计算所需的滤波器阶数N0
wdham = (hamming(N+1))'; % 海明窗计算
Wn=(3+5)/100; % 计算截止频率
b=fir1(N,Wn,wdham);
[H,w]=freqz(b,1);
db=20*log10(abs(H));
% 画频响曲线
plot(w*fs/(2*pi),db);title('幅度响应(单位: dB)');grid
axis([0 50 -100 10]); xlabel('频率(单位:Hz)'); ylabel('分贝')
set(gca,'XTickMode','manual','XTick',[0,3,5,50])
set(gca,'YTickMode','manual','YTick',[-50,0])
本程序是使用函数设计FIR滤波器,而在
温馨提示:答案为网友推荐,仅供参考