ellipord函数——得到阶数和截止频率

引用自ellipord函数介绍matlab官网

椭圆滤波器的参数:
  • [n,Wn] = ellipord(Wp,Ws,Rp,Rs)
  • [n,Wn] = ellipord(Wp,Ws,Rp,Rs,‘s’)
各参数定义:
  • Wp:通带角(截止)频率:通带角(截止)频率,指定为值在0到1之间的标量或二元矢量,1对应归一化奈奎斯特频率,π rad/sample。
  • Ws:阻带角(截止)频率:阻带角频率,指定为值介于0和1之间的标量或二元矢量,1对应归一化奈奎斯特频率,π rad/sample。
  • Rp:通带波纹,用分贝表示。
  • Rs:阻带波纹,用分贝表示。

注:

  • 如果Wp和Ws都是标量且Wp < Ws,那么椭圆返回一个低通滤波器的阶数和截止频率。滤波器的阻带范围为Ws ~ 1,通带范围为0 ~Wp
  • 如果Wp和Ws都是标量且Wp > Ws,那么椭圆返回一个高通滤波器的阶数和截止频率。滤波器的阻带范围为0 ~ Ws,通带范围为Wp ~ 1
  • 如果Wp和Ws都是向量,并且由Ws指定的区间包含由Wp(Ws(1) < Wp(1) < Wp(2) < Ws(2))指定的区间,则椭圆返回带通滤波器的阶数和截止频率。滤波器的阻带范围为0 ~ Ws(1)和Ws(2) ~ 1。通带范围为Wp(1) ~ Wp(2)
    如果Wp和Ws都是向量,且Wp指定的区间包含Ws指定的区间(Wp(1) < Ws(1) < Ws(2) < Wp(2)),则椭圆返回带阻滤波器的阶数和截止频率。滤波器的阻带范围为Ws(1) ~ Ws(2)。通频带范围为0 ~ Wp(1)和Wp(2) ~ 1。

通带纹波、阻带衰减

通带纹波、阻带纹波、通带最大波纹和阻带最小衰减
版权声明:该文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_35556529/article/details/84136179

  • 通带纹波是指在滤波器的频响中通带的最大幅值和最小幅值的差,正常的滤波器一般通带纹波小于1db,不过也视情况而定,通带纹波会导致通带内的信号幅值大小有变化,对一些要求高的系统,纹波越小越好。通带纹波和滤波器的阶数有关系,阶数越大纹波越小。阻带纹波道理应该是一样的,不过好像没有人去关注阻带的纹波,主要关注的阻带参数是阻带衰减。

什么是通带最大波纹和阻带最小衰减,这两个指标的物理意义是什么?

  • 滤波器有部分频率是通,部分是阻。但是阻的部分,未必能够全部阻隔,而只有部分衰减,部分留下来,因此最小衰减就可以描述它阻碍该阻碍的波段的能力的高低(理想状态是100%衰减),最小衰减越大,则能力越好。
  • 同样可以理解通带最大波纹。

ellip函数——得到传递函数系数

引用自ellip函数介绍matlab官网

  • [b,a] = ellip(n,Rp,Rs,Wp)
  • [b,a] = ellip(n,Rp,Rs,Wp,ftype)
各参数定义:
  • n:滤波器阶数:指定为整数标量。对于带通和带阻设计,n表示滤波器阶数的一半。
  • Rp:通带波纹,用分贝表示。
  • Rs:阻带波纹,用分贝表示。
  • Wp:返回的截止频率即上面函数中的Wn
  • ftype:滤波器类型:比如:‘low’ | ‘bandpass’ | ‘high’ | ‘stop’

程序介绍:

// 低通滤波器使用:wp<ws,通带范围为0-wp,阻带为ws-1的范围
wp = 5/(fs/2);  %通带截止频率,归一化
ws = 10/(fs/2);  %阻带截止频率,归一化
alpha_p = 3; %通带允许最大衰减为 db
alpha_s = 40;%阻带允许最小衰减为 db
%获取阶数和截止频率
[ N1 wc1 ] = ellipord( wp , ws , alpha_p , alpha_s);
%获得转移函数系数
[ b a ] = ellip(N1,alpha_p,alpha_s,wc1,'low');

// 高通滤波器使用:wp>ws,通带范围为wp-1,阻带为0-ws
wp = 10/(fs/2);  %通带截止频率,并归一化
ws = 5/(fs/2);  %阻带截止频率,,并归一化
alpha_p = 3; %通带允许最大衰减为  db
alpha_s = 40;%阻带允许最小衰减为  db
%获取阶数和截止频率
[ N2 wc2 ] = ellipord( wp , ws , alpha_p , alpha_s);
%获得转移函数系数
[ b a ] = ellip(N2,alpha_p,alpha_s,wc2,'high');

// 带通滤波器使用:wp(1)=3,wp(2)=5,ws(1)=2,ws(2)=6,排序为:Ws(1) < Wp(1) < Wp(2) < Ws(2)
//即通带被包含在阻带的范围内,阻带外的降为0
wp = [3 5] / (fs/2);  %通带截止频率
ws = [2 6] / (fs/2);  %阻带截止频率
alpha_p = 3; %通带允许最大衰减为  db
alpha_s = 40;%阻带允许最小衰减为  db
%获取阶数和截止频率
[ N3 wn ] = ellipord( wp , ws , alpha_p , alpha_s);
%获得转移函数系数
[ b a ] = ellip(N3,alpha_p,alpha_s,wn,'bandpass');

// 带阻滤波器使用:wp(1)=2,wp(2)=6,ws(1)=3,ws(2)=5,排序为:Wp(1) < Ws(1) < Ws(2) < Wp(2)
//即阻带被包含在通带的范围内,通带外的数据保留,阻带内的降至0
wp = [2 6] / (fs/2);  %通带截止频率
ws = [3 5] / (fs/2);  %阻带截止频率
alpha_p = 3; %通带允许最大衰减为  db
alpha_s = 40;%阻带允许最小衰减为  db
%获取阶数和截止频率
[ N4 wn ] = ellipord( wp , ws , alpha_p , alpha_s);
%获得转移函数系数
[ b a ] = ellip(N4,alpha_p,alpha_s,wn,'stop');

椭圆滤波器使用

//使用filter或filter使用滤波器函数进行滤波
filter_lp_s = filter(b,a,x);
filter_bp_s=filtfilt(b,a,x);

参考文献

[Matlab]椭圆滤波器设计:低通、高通、带通和带阻(4)
常见滤波器简要对比介绍及Matlab实现----椭圆、切比雪夫、巴特沃斯、贝塞尔
模拟和数字低通滤波器的MATLAB实现

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐