数字滤波器设计

更新时间:2023-03-10 17:26:02 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数字滤波器设计

(长沙理工大学城南学院电气与信息工程系电气工程及其自动化)

摘要: 数字滤波器由数字乘法器、加法器和延时单元组成的一种算法或装置。数字滤波器的功能是对输入离散信号的数字代码进行运算处理,以达到改变信号频谱的目的。

关键词: 频谱分析;低通滤波

1. 绪论

1.1. 本文主要研究内容 对模拟信号进行低通滤波处理,要求通带0≤f≤4kHz,通带衰减小于0.5dB,阻带4.5kHz≤f<∞,阻带衰减大于50dB,设采样频率Fs=20kHz。 (1)设计巴特沃斯模拟低通滤波器,求出Ha(s)的分子、分母多项式系数B和A,并画出幅频响应损耗函数曲线; (2)分别用脉冲响应不变法和双线性变换法设计IIR低通数字滤波器,求出Ha(z) 的分子、分母多项式系数Bz和Az,并画出幅频响应损耗函数曲线;

(3)采用窗函数法(分别用汉宁窗、哈明窗、布莱克曼窗函数)设计满足要求的FIR低通滤波器,并画出滤波器h(n)的波形及其幅频响应损耗函数曲线; (4)用频率采样法设计满足要求的FIR低通滤波器,并画出滤波器h(n)的波形及其幅频响应损耗函数曲线;

(5)用等波纹最佳逼近法设计满足要求的FIR低通滤波器,并画出滤波器h(n)的波形及其幅频响应损耗函数曲线;

2. 巴特沃斯模拟低通滤波器 2.1. MATLAB程序

wp=2*pi*4000; ws=2*pi*4500; Rp=0.5; As=50;

[N,wc]=buttord(wp,ws,Rp,As,'s'); [B,A]=butter(N,wc,'s'); k=0:511;

fk=0:20000/512:20000; wk=2*pi*fk;

Hk=freqs(B,A,wk);

plot(fk/1000,20*log10(abs(Hk))); grid on

xlabel('频率/kHz'); ylabel('幅度/dB'); axis([0,6,-65,5]);

幅频响应损耗函数曲线

A =

1.0e+255 *

Columns 1 through 18

0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 Columns 19 through 36

0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 Columns 37 through 54

0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000

Columns 55 through 59

0.0000 0.0000 0.0000 0.0069 4.7947 B =

1.0e+255 *

Columns 1 through 18

0 0 0 0 0 0 0 0 0 0 0 0 0 0

Columns 19 through 36

0 0 0 0 0 0 0 0 0 0 0 0 0 0 Columns 37 through 54

0 0 0 0 0 0 0 0 0 0 0 0 0 0 Columns 55 through 59

0 0 0 0 4.7947 N =

58

0.0000 0.0000 0.0000 0 0 0 0 0 0 0.0000 0.0000 0.0000 0 0 0 0 0 0 3. 分别用脉冲响应不变法和双线性变换法设计IIR低通数字滤波器,求出Ha(z)

的分子、分母多项式系数Bz和Az,并画出幅频响应损耗函数曲线 3.1. 脉冲响应不变法 3.1.1. 程序

Fs=20000;

wp=2*pi*4000; ws=2*pi*4500; Rp=0.5; As=50;

[N,wc]=buttord(wp,ws,Rp,As,'s'); [B,A]=butter(N,wc,'s'); [Bz,Az]=impinvar(B,A); k=0:511;

fk=0:20000/512:20000; wk=2*pi*fk;

Hk=freqs(B,A,wk);

plot(fk/1000,20*log10(abs(Hk))); grid on;

xlabel('频率/kHz'); ylabel('幅值/dB'); axis([0,6,-65,5]);

3.1.2. 幅频响应损耗函数曲线

A =

1.0e+255 *

Columns 1 through 18

0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000

Columns 19 through 36

0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000

Columns 37 through 54

0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000

Columns 55 through 59

0.0000 0.0000 0.0000 0.0069 4.7947

B =

1.0e+255 *

Columns 1 through 18

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Columns 19 through 36

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Columns 37 through 54

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Columns 55 through 59

0 0 0 0 4.7947

0.0000 0.0000 0.0000 0.0000 0 0 0 0 0 0 3.2. 双线性变换法 3.2.1. 程序 Fs=20000; wpz=8000/Fs wsz=9000/Fs; Rp=0.5; As=50;

wp=2*tan(wpz*pi /2); ws=2*tan(wsz*pi/2);

[N,wc]=buttord(wp,ws,Rp,As,'s'); [B,A]=butter(N,wc,'s'); [Bz,Az]=bilinear(B,A,Fs);

[Nd,wdc]=buttord(wpz,wsz,Rp,As); [Bdz,Adz]=butter(Nd,wdc); k=0:511;

fk=0:20000/512:20000;

wk=2*pi*fk;Hk=freqs(B,A,wk);plot(fk/1000,20*log10(abs(Hk))); grid on;

xlabel('频率/kHz'); ylabel('幅值/dB'); axis([0,2,-4000,0]);

3.2.2. 幅频响应损耗函数曲线

A =

1.0e+014 *

Columns 1 through 18

0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0001 0.0004 0.0011 0.0030 0.0075 0.0174 0.0373

Columns 19 through 36

0.0742 0.1372 0.2361 0.3785 1.2334 1.3849 1.4437 1.3943 0.5320 0.3329 0.1877 0.0946

Columns 37 through 44

0.0421 0.0163 0.0054 0.0015 0.0000 B =

1.0e+007 *

Columns 1 through 18

0 0 0 0 0 0 0 0 0 0 0 0

Columns 19 through 36

0 0 0 0 0 0 0 0 0 0 0 0

Columns 37 through 44

0 0 0 0 3.1532

0.5655 1.2445 0.0003 0 0 0 0 0 0.7875 1.0233 0.0001 0 0 0 0 0 1.0215 0.7721 0.0000 0 0 0 0 0 4. 采用窗函数法(分别用汉宁窗、哈明窗、布莱克曼窗函数)设计满足要求的

FIR低通滤波器,求出h(n),并画出幅频响应损耗函数曲线. 4.1. 汉宁窗 4.1.1. 程序 Fs=20000; fp=4000; fs=4500; m=[1 1 0 0]; wp=2*pi*fp/Fs; ws=2*pi*fs/Fs; Rp=0.5; As=50; Bt=ws-wp;

N0 = ceil (6.6* pi /Bt); N=N0+mod(N0+1,2); wc=(wp+ws)/2/pi;

hn=fir1(N-1,wc,hanning(N)); freqz(hn,1,512);

plot (w,20*log(abs(hn))); grid;

axis ([0 ,1, -1000 , 100]); xlabel('频率/kHz'); ylabel('幅值/dB');

4.1.2. 滤波器h(n)的波形及其幅频响应损

4.2. 哈明窗 4.2.1. 程序

Fs=20000; fp=4000; fs=4500; m=[1 1 0 0]; wp=2*pi*fp/Fs; ws=2*pi*fs/Fs; Rp=0.5; Rs=50; Bt=ws-wp;

N0 = ceil (6.6* pi /Bt); N=N0+mod(N0+1,2); wc=(wp+ws)/2/pi;

hn=fir1(N-1,wc,hamming(N)); freqz(hn,1,512);

plot (w,20*log(abs(hn))); grid on;

axis ([0 ,1, -1000 , 100]); xlabel ('频率/kHz'); ylabel ('幅值/dB' );

4.2.2. 滤波器h(n)的波形及其幅频响应损耗函数曲线

4.3. 布莱克曼窗 4.3.1. 程序 Fs=20000; fp=4000; fs=4500; m=[1 1 0 0]; wp=2*pi*fp/Fs; ws=2*pi*fs/Fs; Rp=0.5; Rs=50; Bt=ws-wp;

N0 = ceil (6.6* pi /Bt); N=N0+mod(N0+1,2); wc=(wp+ws)/2/pi;

hn=fir1(N-1,wc,blackman(N)); freqz(hn,1,512);

plot (w,20*log(abs(hn))); grid;

axis ([0 ,1, -1000 , 100]); xlabel ('频率/kHz'); ylabel ('幅值/dB' );

4.3.2. 滤波器h(n)的波形及其幅频响应损耗函数曲线

5. 用频率采样法设计FIR低通滤波器 5.1. 程序

T=input('T=') fp=4000; fs=4500; Fs=20000;

wp=2*pi*fp/Fs; ws=2*pi*fs/Fs; Rp=0.5; As=50; Bt=ws-wp; m=1;

N=ceil((m+1)*2*pi/Bt); N=N+mod(N+1,2); Np=fix(wp/(2*pi/N)); Ns=N-2*Np-1;

Hk=[ones(1,Np+1),zeros(1,Ns),ones(1,Np)]; Hk(Np+2)=T; Ak(N-Np)=T;

thetak=-pi*(N-1)*(0:N-1)/N; hdk=Hk.*exp(j*thetak); hn=real(ifft(hdk)); hw=fft(hn,1024);

wk=2*pi*[0:1023]/1024; hgw=hw.*exp(j*wk*(N-1)/2); Rp=max(20*log10(abs(hgw))); hgmin=min(real(hgw)); As=20*log10(abs(hgmin));

[N,wc]=buttord(wp,ws,Rp,As,'s'); [B,A]=butter(N,wc,'s');

k=0:511;fk=0:20000/512:20000;wk=2*pi*fk; Hk=freqs(B,A,wk);

plot(fk/1000,20*log10(abs(Hk))); grid on;

xlabel('频率/kHz'); ylabel('幅度/dB'); T=1 T =

1

5.2. 滤波器h(n)幅频响应损耗函数曲线

参考文献

[1]高西全,丁玉美.数字信号处理.西安:西安电子科技大学出版社,2008. [2]陈后金,数字信号处理.北京:高等教育出版社,2004.

本文来源:https://www.bwwdw.com/article/kgxw.html

Top