采用窗函数法设计一个数字FIR低通滤波器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
采用窗函数法设计一个数字FIR低通滤波器
悬赏分:0 - 解决时间:2007-12-19 19:45
采用窗函数法设计一个数字FIR低通滤波器,其技术指标为:
wp=0.2pi,ws=0.3pi,rp0.25db,as=50db
,并画出其频率响应图。
提问者:江水西岸- 一级
最佳答案
结合衰减和过度带,可选择哈明窗。
尽管在设计中,没有使用通带波动值Rp,但必须检查设计的实际波动,验证它是否确实在给定容限内。
对应的MATLAB程序为:
wp= 0.2* pi; ws = 0.3 *pi;
tr_width = ws –wp; %确定过度带宽
M = ceil (6.6* pi /tr_width) +1 ;% 确定滤波器阶数,ceil是向上取整函数
n = [0: 1: M-1];
wc = (ws +wp ) /2; %理想低通的截止频率
hd = ideal _lp (wc, M);
w_ham = (hamming (M))’;
h = hd .* w_ham;
[db, mag, pha, grd, w]=freqz_m (h, [1]);
delta _w =2*pi/1000;
Rp= - (min (db(1:1: wp/ delta _w +1))); %实际通带波动
As= - round (max (db (ws/delta_w +1: 1: 501 ))) ;% 最小阻带衰减
%画图(见图1-5-1)
subplot (2,2,1); stem(n, hd ); title (‘理想冲激响应’);
axis ([0 ,M-1, -0.1 , 0.3]); xlabel (‘n’); ylabel (‘hd(n)’ );
subpl ot (2,2,2); stem(n, w_ham ); title (‘哈明窗’);
axis ([0 ,M-1, 0 , 1.1]); xlabel (‘n’); ylabel (‘w(n)’ );
subplot (2,2,3); stem(n, h ); title (‘实际冲激响应’);
axis ([0 ,M-1, -0.1 , 0.3]); xlabel (‘n’); ylabel (‘h(n)’ );
subplot (2,2,4); plot (w/pi, db ); title (‘幅度响应(单位:dB)’); grid
axis ([0 ,1, -100 , 10]); xlabel (‘频率(单位:pi)’); ylabel (‘分贝数’ );
根据以上代码,可计算出滤波器阶数M=67,实际的阻带衰减As=52dB,实际的通带波动为Rp=0.0394 dB,满足设计技术指标。
窗函数法设计FIR数字高通滤波器
悬赏分:30 - 解决时间:2008-12-31 15:43
用matlab
技术指标fc=4800Hz,fp=5000Hz,Ac=100dB,Ap=1dB
提问者:一直努力追妞妞- 一级
最佳答案
将模拟频率转化为数字频率,设取样时间为T(要满足抽样定理)
Ωp=2π*fp*T Ωs=2π*fs*T
过渡带宽度△Ω=Ωp-Ωs
阻带衰减已经超过74db,要选用Kaiser窗了,Kaiser的参数可变,要根据公式确定滤波器的参数
一般都选用Ⅰ型线性相位滤波器即滤波器阶数M为偶数,程序如下:
wp=;ws=;Ap=1;As=100;
Rp=1-10.^(-0.05*Ap);Rs=10.^(-0.05*As);
f=[fp fs];
a=[0 1];
dev=[Rp Rs];
[M,wc,beta,ftype]=kaiserord(f,a,dev);
M=mod(M,2)+M;
h=fir1(M,wc,ftype,kaiser(M+1,beta));
omega=linspace(0,pi,512);
mag=freqz(h,[1],omega);
plot(omega/pi,20*log10(abs(mag)));
grid;
omega1=linspace(0,wp,512);
h1=freqz(h,[1],omega1);
omega2=linspace(ws,pi,512);
h2=freqz(h,[1],omega2);
fprintf('Ap=%.4f\n',-20*log10(min(abs(h1))));
fprintf('As=%.4f\n',-20*log10(max(abs(h2))));
运行程序可以得到滤波器的通阻带衰减,画出频率响应,若同阻带衰减不满足要求还可以使用滤波器的优化,一般使用的等波纹FIR进行优化。