文档库

最新最全的文档下载
当前位置:文档库 > 设计数字低通滤波器(用matlab实现)

设计数字低通滤波器(用matlab实现)

DSP 设计滤波器报告

姓名:张胜男 班级:07级电信(1)班 学号:078319120

一·低通滤波器的设计

(一)实验目的:掌握IIR 数字低通滤波器的设计方法。

(二)实验原理:

1、滤波器的分类

滤波器分两大类:经典滤波器和现代滤波器。

经典滤波器是假定输入信号)(n x 中的有用成分和希望取出的成分各自占有不同的频带。这样,当)(n x 通过一个线性系统(即滤波器)后可讲欲去除的成分有效的去除。

现代滤波器理论研究的主要内容是从含有噪声的数据记录(又称时间序列)中估计出信号的某些特征或信号本身。

经典滤波器分为低通、高通、带通、带阻滤波器。每一种又有模拟滤波器(AF )和数字滤波器(DF )。对数字滤波器,又有IIR 滤波器和FIR 滤波器。 IIR DF 的转移函数是:

∑∑=-=-+==N

k k k M r r r

z a z b z X z Y z H 10

1)()()(

FIR DF 的转移函数是:

∑-=-=10)()(N n n

z n h z H

FIR 滤波器可以对给定的频率特性直接进行设计,而IIR 滤波器目前最通用的方法是利用已经很成熟的模拟滤波器的设计方法进行设计。

2、滤波器的技术要求

低通滤波器:

p ω:通带截止频率(又称通带上限频率) s ω:阻带下限截止频率 p α:通带允许的最大衰减 s α:阻带允许的最小衰减 (p α,s

α的单位dB ) p

Ω:通带上限角频率 s Ω:阻带下限角频率 (s p p T ω=Ω,s s s T ω=Ω)即 C p p F ωπ2=Ω C s s F ωπ2=Ω

3、IIR 数字滤波器的设计步骤:

1)按一定规则将给出的数字滤波器的技术指标转换为模拟低通滤波器的技术指标。

2)根据转换后的技术指标设计模拟低通滤波器)(s G ;

3)再按一定的规则将)(s G 转换成)(z H 。

4)若是高通、带通或带阻数字滤波器则将它们的技术指标先转化为低通模拟滤波器的技术指标,然后按上述步骤2)设计出低通)(s G ,再将)(s G 转换为所需的)(z H 。

4.几种不同类型的滤波器的介绍:

因为我们设计的滤波器的冲击响应一般都为实数,所以有

2

*)()()()()(s j s j G s G s G s G s G Ω=-=Ω=

这样,如果我们能由

p α,p Ω,s α,s Ω求出2

)(Ωj G ,那么就容易得到所需要

的)(s G 。 不同类型的2)(Ωj G 的表达式,代表了几种不同类型的滤波器。

(1)巴特沃思(Butterworth)滤波器: n C j G )(11)(222

Ω+=Ω

C 为待定常数,N 为待定的滤波器阶次。

(2)切比雪夫I 型(Chebyshev – I )滤波器:

)(11

)(222Ω+=Ωn C j G ε

5.巴特沃思模拟低通滤波器的设计

由于每一个滤波器的频率范围将直接取决于设计者的应用目的,因此必然是千差万别。为了使设计规范化,我们需要将滤波器的频率参数作归一化处理。设所给的实际频率为Ω(或f ),归一化后的频率为λ,对低通模拟滤波器,令

λ=p ΩΩ/ 显然,1=p λ,p s s ΩΩ=/λ。又令归一化复数变量为p ,λj p =,显然

p

p s j j p Ω=ΩΩ==//λ 所以巴特沃思模拟低通滤波器的设计可按以下三个步骤来进行。

(1)将实际频率Ω规一化

(2)求C 和N

11010/2-=P C α

s p s N λααlg 1101

10lg 10/10/--=

这样C 和N 可求。

若令p α=3dB ,则C =1,这样巴特沃思滤波器的设计就只剩一个参数N ,这时 N

p N j G 222)/(1111

)(ΩΩ+=+=λλ

(3)确定)(s G

因为λj p =,根据上面公式有

N N N p j p p G p G 22)1(11)/(11)()(-+=+=-

由 0)1(12=-+N N p 解得

)2212exp(πN N k j p k -+=,k =1,2, (2)

这样可得 1)212cos(21

)

)((1)(21+-+-=--=-+πN N k p p p p p p p G k N k k 求得)(p G 后,用p s Ω/代替变量p ,即得实际需要得)(s G 。

6.用双线性Z 变换法设计IIR 数字低通滤波器

s 平面到z 平面的映射关系

11

2+-=z z T s s 称为双线性Z 变换,由此关系求出

s T s

T z s s )2/(1)2/(1-+=

及 )2/cos()

2/sin(2ωωs T j j =Ω

即 )2/tan(2ωs T =

Ω

)2/arctan(2s T Ω=ω 因为设计滤波器时系数s T 2

会被约掉,所以又有

s s z -+=11 )2/tan(ω=Ω

Ω=arctan 2ω

(三)实验内容

题一:试用双线性Z 变换法设计一低通数字滤波器,给定技术指标是100=p f Hz ,300=s f Hz ,3=p αdB ,20=s α dB ,抽样频率1000=s F Hz 。

提示:首先应该得到角频率ω,然后再

(1) 将数字滤波器的技术要求转换为模拟滤波器的技术要求。

(2) 设计低通滤波器)(s G

由λ=p ΩΩ/依次求出p λ,s λ,再求出N ,可得)(p G 然后由p s

p p G s G Ω==)

()(转换成)(s G

(3) 由)(s G 求)(z H

源程序:

fp=100;

fs=300;

ap=3; %通带最大衰减

as=20; %阻带最小衰减

Fs1=1000; %抽样频率

wp=2*pi*fp/Fs1;

ws=2*pi*fs/Fs1; %数字角频率

Fs=Fs1/Fs1;

T=1/Fs;

Op=2/T*tan(wp/2);

Os=2/T*tan(ws/2); %角频率畸变

[N Wn]=buttord(Op,Os,ap,as,'s'); %N 代表滤波器阶数,Wn 代表滤波器的

截止频率。简单来说就是在wp 处,通带内波

纹系数或者说是通带内达到最大衰减为Rp ,如

(3db ),而在Ws 处,阻带达到最小衰减为Rs

(如40db ),而我们默认求得的Wn 是在(-3db)

时的频率

[z p k]=buttap(N); %G(p)的零点,极点,增益用于计算N 阶归一化

(3dB 截止频率Ωc=1)模拟低通原型滤波器系统函数的零、极点和增益因子。

[b a]=zp2tf(z,p,k); %G(p)的分子、分数系数从零、极点模型得到

系统函数的分子、分母多项式系数向量ba 、aa

[B A]=lp2lp(b,a,Op); %H(s)的分子、分数系数改变低通模拟滤波器的

截止频率,原滤波器是以多项式系数Bap,Aap 给出的,改后

的滤波器是带截止频率Wn 的

[Bz Az]=bilinear(B,A,Fs*T/2); %H(z)的分子、分数系数

[H w]=freqz(Bz,Az,256,Fs*Fs1); %H 频率响应

plot(w,abs(H),'r');

title('低通滤波器');

grid on;

实验结果:

设计数字低通滤波器(用matlab实现)

050100150200250300350400450500

00.2

0.4

0.6

0.8

1

1.2

低通滤波器

同理可以设计出低通滤波器和带通及带阻滤波器。

MATLAB 参考程序和仿真内容

%*******************************************************************

%

function[x]=ffts(mode,M)

Nfft=2^M;

x=zeros(1,Nfft); %定义一个长度为Nfft的一维全0数组

if mode= =1 for n=0:Nfft-1 x(n+1)=sin(2*pi*n/Nfft); end

end %定义一个长度为Nfft的单周期正弦序列

if mode= =2 for n=0:Nfft-1 x(n+1)=sin(4*pi*n/Nfft); end

end %定义一个长度为Nfft的双周期正弦序列

if mode= =3 for n=0:Nfft/2-1 x(n+1)=sin(4*pi*n/Nfft); end

end %定义一个长度为Nfft/2的正弦序列,后面一半为0序列。if mode= =4 for n=0:Nfft-1 x(n+1)=square(2*pi*n/Nfft); end

end

if mode= =5 for n=0:Nfft-1 x(n+1)=square(2*pi*n/Nfft); end

end

if mode= =6 for n=0:Nfft/2-1 x(n+1)=square(4*pi*n/Nfft); end

end

n=0:Nfft-1;

subplot(2,1,1);

stem(n,x);

axis([0 Nfft-1 1.1*min(x) 1.1*max(x)]);

xlabel('Points-->');

ylabel('x(n)');

X=abs(fft(x,Nfft));

subplot(2,1,2);

stem(n,X);

axis([0 Nfft-1 1.1*min(X) 1.1*max(X)]);

xlabel('frequency-->');

ylabel('!X(k)!');

设计数字低通滤波器(用matlab实现)

图二

设计数字低通滤波器(用matlab实现)

图三