请教(FIR滤波器)fir1()参数设置问题
我每次用fir1()函数,经常会出现相位变换的问题,有时还会出现幅值变小的问题。这跟滤波器参数设置是不是有问题。
请问滤波器的阶数怎么设置。
很多书上说是根据实际要求来考虑,但在程序里,一般没考虑到 这个问题。
w1=20;
w2=150;
N=2048;
n=0:N-1;
fs=2048;
t=n/fs;
x = sin(2.0*pi*w1*t)+sin(2.0*pi*w2*t)+sin(2.0*pi*60*t)+sin(2.0*pi*80*t);
b=fir1(200,/1024,'bandpass');
y=fftfilt(b,x,1024);
figure(1);%图1
plot(t,y);
z=sin(2.0*pi*60*t)+sin(2.0*pi*80*t);%滤波后的理论频谱
figure(2);图2
plot(t,z); 任何滤波器在滤波以后都会有相位变化和初始部分幅值变小的问题,这是因为任何滤波器在输入信号的初始有一个从暂态到稳态的过渡过程。 滤波器的阶数怎么设置。有什么经验公式没有,今天我用一个滤波器,由于采样频率太大(38400HZ),而滤波器截止频率太小,只有100多HZ,今本上没什么反映,大家有什么经验公式没,或者介绍一本书也行,讲滤波器的 可参看陈怀琛的“数字信号处理教程:MATLAB释义与实现”,电子工业出版社。
回复 板凳 xsy710 的帖子
buttord 模拟/数字滤波器最小阶次估计=buttord(Wp,Ws,Rp,Rs) 关键是,我们在工程上的用的时候好像没有考虑到这些问题,我们只考虑滤波后的结果,比如我是带通滤波,我只考虑这一频率段,其余的我就没什么要求了(即滤波器的那些参数),这样到底对不对啊。大家设计滤波器的时候有没有考虑到这些问题啊,你们是不是有些其它的要求啊? 本帖最后由 wdhd 于 2016-9-18 13:34 编辑
原帖由 xsy710 于 2009-3-16 23:40 发表
关键是,我们在工程上的用的时候好像没有考虑到这些问题,我们只考虑滤波后的结果,比如我是带通滤波,我只考虑这一频率段,其余的我就没什么要求了(即滤波器的那些参数),这样到底对不对啊。大家设计滤波器的时候有没有考虑到这些问题啊,你们是不是有些其它的要求啊?
在工程上是有可能这样考虑,但也不能说只考虑通带,其它不考虑了,至少要考虑阻带衰减多少,例如衰减20db,40db,...,有一个基本的要求,否则阻带衰减很小,起不到滤波的作用了。在这种情况下,没有过渡带的参数就很难计算滤波器的阶数,只能设定一个阶数,例如N=40,b=fir1(N,Wn),通过freqz观看频响是否满足要求,或修改阶数再计算。 本帖最后由 wdhd 于 2016-9-18 13:35 编辑
原帖由 songzy41 于 2009-3-17 06:50 发表
在工程上是有可能这样考虑,但也不能说只考虑通带,其它不考虑了,至少要考虑阻带衰减多少,例如衰减20db,40db,...,有一个基本的要求,否则阻带衰减很小,起不到滤波的作用了。在这种情况下,没有过渡带的参数就 ...
若是考虑过渡带的话,那么fir1就不适合应用了?那么应该用freqz或者其他的(请举例)吗?
页:
[1]