椭圆滤波器的设计.docx
《椭圆滤波器的设计.docx》由会员分享,可在线阅读,更多相关《椭圆滤波器的设计.docx(11页珍藏版)》请在冰豆网上搜索。
椭圆滤波器的设计
第一章摘要
本文通过利用MATLAB滤波滤波器设计函数直接实现椭圆滤波器的设计,介绍了椭圆型滤波器的基本理论和设计思想,给出了基于MATLAB设计低通、带通、高通椭圆型滤波器的具体步骤和利用MATLAB产生一个包含低频、中频、高频分量的连续信号,并实现对信号进行采样。
文中还对采样信号进行频谱分析和利用设计的椭圆滤波器对采样信号进行滤波处理,并对仿真结果进行分析和处理。
详细介绍了在基于MATLAB设计椭圆滤波器过程中常用到的工具和命令。
第二章引言
数字滤波器设计在电子工程、应用数学和计算机科学领域都是非常重要的内容。
椭圆滤波器(Ellipticfilter)又称考尔滤波器(Cauerfilter),是在通带和阻带等波纹的一种滤波器。
它比切比雪夫方式更进一步地是同时用通带和阻带的起伏为代价来换取过渡带更为陡峭的特性。
椭圆滤波器相比其他类型的滤波器,在阶数相同的条件下有着最小的通带和阻带波动。
它在通带和阻带的波动相同,这一点区别于在通带和阻带都平坦的巴特沃斯滤波器,以及通带平坦、阻带等波纹或是阻带平坦、通带等波纹的切比雪夫滤波器。
现代生活中,数字信号经过DAC转换获得的模拟信号的例子太多了,如声卡中的语音合成输出,又如试验室中的合成信号发生器等,为了滤除谐波干扰,获得高精度的模拟信号,大多数就采用本文介绍的衰减特性陡峭的椭圆低通滤波器。
因此椭圆滤波器具有广泛的应用。
第三章基本原理
3.2椭圆滤波器的特点
幅值响应在通带和阻带内都是等波纹的,对于给定的阶数和给定的波纹要求,椭圆滤波器能获得较其它滤波器为窄的过渡带宽,就这点而言,椭圆滤波器是最优的,其振幅平方函数为
其中RN(x)是雅可比(Jacobi)椭圆函数,ε为与通带衰减有关的参数。
特点:
1、椭圆低通滤波器是一种零、极点型滤波器,它在有限频率范围内存在传输零点和极点。
2、椭圆低通滤波器的通带和阻带都具有等波纹特性,因此通带,阻带逼近特性良好。
3、对于同样的性能要求,它比前两种滤波器所需用的阶数都低,而且它的过渡带比较窄。
第四章设计过程
4.1椭圆滤波器设计结构图
椭圆滤波器设计结构图如图所示:
图4.1结构框图
4.2设计椭圆数字滤波器的步骤
1.确定数字滤波器的性能指标:
wp,ws,Ap,As。
2.将数字滤波器的性能指标转化成相应模拟滤波器的性能指标。
3.设计满足指标要求的模拟滤波器Ha(s)。
4.通过变换将模拟滤波器转换成数字滤波器
4.3数字滤波器的MATLAB实现和频谱分析
1.Matlab的信号处理工具箱提供了设计椭圆滤波器的函数:
ellipord函数和ellip函数。
Ellipord函数的功能是求滤波器的最小阶数,其调用格式为:
调用格式:
[n,Wp] = ellipord(Wp,Ws,Rp,Rs)
n-椭圆滤波器最小阶数;
Wp-椭圆滤波器通带截止角频率;
Ws-椭圆滤波器阻带起始角频率;
Rp-通带波纹(dB);
Rs-阻带最小衰减(dB);
Ellip函数的功能是用来设计椭圆滤波器,其调用格式:
[b,a] = ellip(n,Rp,Rs,Wp)
[b,a] = ellip(n,Rp,Rs,Wp,'ftype')
返回长度为n+1的滤波器系数行向量b和a,
'ftype'='high'高通滤波器
'ftype'='low'低通滤波器
'ftype'='stop'带阻滤波器
2.Matlab的信号处理工具箱提供了频谱分析函数:
fft函数、filter函数和freqz函数。
fft函数freqz功能是用来求离散时间系统的频率响应。
其调用格式:
[h,w]=freqz(b,a,n)
[h,f]=freqz(b,a,n,Fs)
h=freqz(b,a,w)
h=freqz(b,a,f,Fs)
freqz(b,a,n)
说明:
freqz用于计算数字滤波器H(Z)的频率响应函数H(ejω)。
[h,w]=freqz(b,a,n)可得到数字滤波器的n点复频响应值,这n个点均匀地分布在[0,π]上,并将这n个频点的频率记录在w中,相应的频响值记录在h中。
要求n为大于零的整数,最好为2的整数次幂,以便采用FFT计算,提高速度。
缺省时n=512。
[h,f]=freqz(b,a,n,Fs)用于对H(ejω)在[0,Fs/2]上等间隔采样n点,采样点频率及相应频响值分别记录在f和h中。
由用户指定FS(以HZ为单位)值。
h=freqz(b,a,w)用于对H(ejω)在[0,2π]上进行采样,采样频率点由矢量w指定。
h=freqz(b,a,f,Fs)用于对H(ejω)在[0,FS]上采样,采样频率点由矢量f指定。
freqz(b,a,n)用于在当前图形窗口中绘制幅频和相频特性曲线。
filter函数功能:
利用IIR滤波器和FIR滤波器对数据进行滤波。
格式:
y=filter(b,a,x)
[y,zf]=filter(b,a,x)
y=filter(b,a,x,zi)
说明:
filter采用数字滤波器对数据进行滤波,其实现采用移位直接Ⅱ型结构,因而适用于IIR和FIR滤波器。
滤波器的系统函数为
即滤波器系数a=[a0a1a2...an],b=[b0b1...bm],输入序列矢量为x。
这里,标准形式为a0=1,如果输入矢量a时,a0≠1,则MATLAB将自动进行归一化系数的操作;如果a0=0,则给出出错信息。
y=filter(b,a,x)利用给定系数矢量a和b对x中的数据进行滤波,结果放入y矢量中,y的长度取max(N,M)。
y=filter(b,a,x,zi)可在zi中指定x的初始状态。
[y,zf]=filter(b,a,x)除得到矢量y外,还得到x的最终状态矢量zf。
freqz函数功能:
离散时间系统的频率响应。
格式:
[h,w]=freqz(b,a,n)
[h,f]=freqz(b,a,n,Fs)
h=freqz(b,a,w)
h=freqz(b,a,f,Fs)
freqz(b,a,n)
说明:
freqz用于计算数字滤波器H(Z)的频率响应函数H(ejω)。
[h,w]=freqz(b,a,n)可得到数字滤波器的n点复频响应值,这n个点均匀地分布在[0,π]上,并将这n个频点的频率记录在w中,相应的频响值记录在h中。
要求n为大于零的整数,最好为2的整数次幂,以便采用FFT计算,提高速度。
缺省时n=512。
[h,f]=freqz(b,a,n,Fs)用于对H(ejω)在[0,Fs/2]上等间隔采样n点,采样点频率及相应频响值分别记录在f和h中。
由用户指定FS(以HZ为单位)值。
h=freqz(b,a,w)用于对H(ejω)在[0,2π]上进行采样,采样频率点由矢量w指定。
h=freqz(b,a,f,Fs)用于对H(ejω)在[0,FS]上采样,采样频率点由矢量f指定。
freqz(b,a,n)用于在当前图形窗口中绘制幅频和相频特性曲线。
第五章程序和仿真图
5.1低通滤波器设计程序
%连续信号的产生及采样
clear
Fs=100;
t=(1:
100)/Fs;
s1=sin(2*pi*t*5);
s2=sin(2*pi*t*15);
s3=sin(2*pi*t*30);
s=s1+s2+s3;
plot(t,s)
xlabel('时间(s)')
ylabel('幅值')
%椭圆低通滤波器的设计
[b,a]=ellip(4,0.1,40,5*2/Fs);
[H,w]=freqz(b,a,512);
plot(w*Fs/(2*pi),abs(H));
xlabel('频率(Hz)');ylabel('频率响应图');
grid;
%对滤波后的信号进行分析和变换
sf=filter(b,a,s);
plot(t,sf);
xlabel('时间(s)');
ylabel('幅值');
axis([01-11]);
S=fft(s,512);
SF=fft(sf,512);
w=(0:
255)/256*(Fs/2);
plot(w,abs([S(1:
256)'SF(1:
256)']));
xlabel('频率(Hz)');
ylabel('傅立叶变换图');
grid;
legend({'before','after'});
5.2带通滤波器设计程序
%连续信号的产生及采样
Fs=100;
t=(1:
100)/Fs;
s1=sin(2*pi*t*5);
s2=sin(2*pi*t*15);
s3=sin(2*pi*t*30);
s=s1+s2+s3;
plot(t,s);
xlabel('时间(秒)');
ylabel('幅值');
[b,a]=ellip(4,0.1,40,[1020]*2/Fs);
[H,w]=freqz(b,a,512);
plot(w*Fs/(2*pi),abs(H));
xlabel('频率(Hz)');ylabel('频率响应图');
grid;
%椭圆带通滤波器的设计
[b,a]=ellip(4,0.1,40,[812]*2/Fs);
[H,w]=freqz(b,a,512);
plot(w*Fs/(2*pi),abs(H));
xlabel('频率(Hz)');
ylabel('频率响应图');
grid;
%对滤波后的信号进行分析和变换
sf=filter(b,a,s);
plot(t,sf);
xlabel('时间(s)');
ylabel('幅值');
axis([01-11]);
S=fft(s,512);
SF=fft(sf,512);
w=(0:
255)/256*(Fs/2);
plot(w,abs([S(1:
256)'SF(1:
256)']));
xlabel('频率(Hz)');
ylabel('傅立叶变换图');
grid;
legend({'before','after'});
5.3高通滤波器设计程序
%连续信号的产生及采样
clear
Fs=100;
t=(1:
100)/Fs;
s1=sin(2*pi*t*5);
s2=sin(2*pi*t*10);
s3=sin(2*pi*t*15);
s=s1+s2+s3;
plot(t,s)
xlabel('时间(s)')
ylabel('幅值')
%椭圆高通滤波器的设计
[b,a]=ellip(4,0.1,40,30*2/Fs,'high');
[H,w]=freqz(b,a,512);
plot(w*Fs/(2*pi),abs(H));
xlabel('频率(Hz)');ylabel('频率响应图');
grid;
%对滤波后的信号进行分析和变换
sf=filter(b,a,s);
plot(t,sf);
xlabel('时间(s)');
ylabel('幅值');
axis([01-11]);
S=fft(s,512);
SF=fft(sf,512);
w=(0:
255)/256*(Fs/2);
plot(w,abs([S(1:
256)'SF(1:
256)']));
xlabel('频率(Hz)');
ylabel('傅立叶变换图');
grid;
legend({'before','after'});
5.4信号的仿真图
1.信号通过椭圆低通滤波器的仿真图,如下图所示
图5.1信号通过椭圆低通滤波器的仿真图
注:
图中蓝色曲线代表滤波前的幅频曲线,绿线代表滤波后的幅频曲线。
2.信号通过椭圆带通滤波器的仿真图,如下图所示
图5.2信号通过椭圆带通滤波器的仿真图
3.信号通过椭圆高通滤波器的仿真图,如下图所示
图5.3信号通过椭圆高通滤波器的仿真图
第六章结语
数字滤波器的应用十分广泛,利用Matlab语言,很容易地设计地设计出数字椭圆滤波器,数字椭圆滤波器可以用较少的阶数获得很高的选择特性,在相位要求不敏感的场合,如语音信号处理等,适合用数字椭圆滤波器。
在设计过程中可以对比滤波器的特性,随时更改参数,已达到滤波器设计的最优。
心得体会
通过整个设计过程,让我感触最深的就是
功能的强大性与掌握编程各种函数和语句的重要性。
当然首先要了解所要编程运行的对象的原理。
在课程设计的过程中,我深深的感受到我们所学的东西太少了,需要学习的东西太多了,真的是学无止境。
学习的过程是艰辛的,但是同时也是快乐的,让我们大家朝着自己各自的目标努力奋斗,努力学习吧,快乐生活,快乐学习,终将一天我们会成功的。
参考文献
1陈后金主编.数字信号处理.机械工业出版社,2005年
2陈亚勇等编著.matlab信号处理详解.人民邮电出版社,2001年
3宁彦卿等译.电子滤波器设计.科学出版社.2008年
(注:
可编辑下载,若有不当之处,请指正,谢谢!
)