用matlab确定椭圆滤波器的阶数(原创)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
首先要安装Matlab,尽管Matlab很早已经出了Matlab7,但安装文件很大,如果机器不太好的话,完全没必要,装个matlab6.5就够了,下面的Matlab6.5的下载地址,经过了验证,可以下载,并且用迅雷下载的话,速度很快。
请使用右键-迅雷下载--matlab6.5下载地址
Matlab的信号处理工具箱提供了设计椭圆滤波器的函数:ellipord函数和ellip函数。
ellipord函数
求椭圆滤波器的阶数
调用格式:[n,Wp] = ellipord(Wp,Ws,Rp,Rs)
n-椭圆滤波器最小阶数;
Wp-椭圆滤波器通带截止角频率;
Ws-椭圆滤波器阻带起始角频率;
Rp-通带波纹(dB);
Rs-阻带最小衰减(dB);
其中Wp和Ws都是角频率,值在0~1之间,当采样频率为f时,奈奎斯特频率为f/2,
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
例如:设计一个低通椭圆滤波器,通带截止频率为10MHz,阻带起始频率为11MHz,通带波纹为小于0.25dB,阻带衰减为60dB,采样频率f=100MHz,其程序为:https://static.assets-stash.eet-china.com/album/old-resources/2009/2/6/ba02857b-94c9-43e1-8f03-21001cdb2a9f.rar
Elliptic_n.m文件:
f=100000000;
fn=f/2;
Rp=0.25;
Rs=60;
Wp=10000000/fn;
Ws=11000000/fn;
[n,Wn]=ellipord(Wp,Ws,Rp,Rs);
程序运行:
>> run ellip_n
>> n
n =
9
椭圆滤波器的阶数n=9与我的另一篇blog文章“椭圆滤波器设计”用椭圆滤波器选择性图所得到的阶数是一样的。
ellip函数
调用格式:[b,a] = ellip(n,Rp,Rs,Wp)
[b,a] = ellip(n,Rp,Rs,Wp,'ftype')
返回长度为n+1的滤波器系数行向量b和a,
'ftype' = 'low'低通滤波器
'ftype' = 'stop'带阻滤波器
程序运行:
>>[b,a]=ellip(n,Rp,Rs,Wn)
>> freqz(b,a,512,f)
(512为频率等分点,为默认)
可以看到滤波器在8MHz的时候就开始截止了,到10MHz的时候衰减得很厉害。不过用ellipord函数确定椭圆滤波器的阶数还是很有用的,通过确定阶数,从而在通过查询元件归一化参数值表,设计出低通椭圆滤波器。具体可参考我的blog文:椭圆滤波器设计。
参考资料:
1)DDS芯片AD9850应用:输出低通滤波器的设计
http://hi.baidu.com/winston_phil/blog/item/2241a59790fc436e55fb96f7.html
2)数字椭圆滤波器的Matlab设计与实现,<<现代电子技术>>2007年 第30卷 第06期,作者: 王靖, 李永全
3)Minimum order for elliptic filters – MATLAB
http://www.mathworks.com/access/helpdesk/help/toolbox/signal/ellipord.html
4)Elliptic filter design – MATLAB
http://www.mathworks.com/access/helpdesk/help/toolbox/signal/ellip.html
5)请问matlab中怎么调用m文件啊!!
http://tieba.baidu.com/f?kz=268172890
6)matlab的freqz
http://blog.csdn.net/silenceee/archive/2006/11/01/1361258.aspx
文章评论(0条评论)
登录后参与讨论