设计巴特沃斯IIR滤波器可使用butter函数和buttord函数。
第一:使用buttord函数先求得最小阶数和截止频率:[n,Wn]= buttord(Wp,Ws,Rp,Rs)。
理解:上式中n代表滤波器阶数,Wn代表滤波器的截止频率,这两个参数可使用buttord函数来确定。简单来说,就是在Wp处,通带内波纹系数或者说是通带内达到最大衰减为Rp,如(3db),而在Ws处,阻带达到最小衰减为Rs(如40db),而我们默认求得的Wn是在(-3db)时的频率。所以:When Rp is chosen as 3 dB, the Wn in BUTTER is equal to Wp in BUTTORD.

1、buttord

函数含义:设计巴特沃思滤波器(阶数和截止频率等参数要确定)

 函数使用形式: [n,Wn] = buttord(Wp,Ws,Rp,Rs)

           [n,Wn] = buttord(Wp,Ws,Rp,Rs,'s')

 [n,Wn] = buttord(Wp,Ws,Rp,Rs)返回数字巴特沃思滤波器的最低阶n,通带纹波不超过Rp dB,阻带衰减至少Rs dB。
 Wp和Ws分别是滤波器的通带和阻带边沿频率,归一化为0到1,其中1对应于πrad / sample。
 还返回相应的截止频率Wn的标量(或矢量)。
 要设计巴特沃斯滤波器,请使用输出参数n和Wn作为butter的输入。

 [n,Wn] = buttord(Wp,Ws,Rp,Rs,'s')查找模拟巴特沃思滤波器的最小阶数n和截止频率Wn。 以弧度每秒为单位指定频   率  Wp和Ws。 通带或阻带可以是无限的。

 (1)n —最低滤波器阶数
       整数标

       最低的滤波器阶数,以整数标量返回。

(2)    Wn-截止频率
               标量| 向量
               截止频率,以标量或矢量形式返回。

(3) Wp —通带截止频率
             标量| 二元向量

通带截止频率,指定为标量或二元向量,值在0到1之间,其中1对应于归一化的奈奎斯特频率πrad / sample。

如果Wp和Ws均为标量且Wp <Ws,则buttord返回低通滤波器的阶数和截止频率。滤波器的阻带范围为Ws至1,通带范围为0至Wp。
              如果Wp和Ws均为标量且Wp> Ws,则buttord返回高通滤波器的阶数和截止频率。滤波器的阻带范围是0到Ws,通带范围是Wp到1。
               如果Wp和Ws都是向量,并且由Ws指定的间隔包含由Wp指定的间隔(Ws(1)<Wp(1)<Wp(2)<Ws(2)),则buttord返回的阶次和截止频率为带通滤波器。滤波器的阻带范围从0到Ws(1),范围从Ws(2)到1。通带范围从Wp(1)到Wp(2)。
                如果Wp和Ws都是向量,并且Wp指定的间隔包含Ws指定的一个(Wp(1)<Ws(1)<Ws(2)<Wp(2)),则buttord返回的阶数和截止频率为带阻滤波器。滤波器的阻带范围为Ws(1)至Ws(2)。通带范围从0到Wp(1),从Wp(2)到1。

(4)Ws —阻带截止频率
             标量| 二元向量

阻带截止频率,指定为标量或二元向量,值在0到1之间,其中1对应于归一化的奈奎斯特频率πrad / sample。

数据类型:单| 双

(5)Rp-通带纹波
              标量

通带纹波,指定为标量,单位为dB。

数据类型:单| 双

(6)Rs-阻带衰减
                标量
                阻带衰减,指定为标量,单位为dB。

数据类型:单| 双

Buttord的阶数预测公式适用于模拟和数字情况下的模拟范围。
               对于数字情况,它将在估计阶数和固有频率之前将频率参数转换为s域。 然后,该函数将转换回z域。

buttord最初通过将所需滤波器的通带频率转换为1 rad / second(对于低通和高通滤波器)以及–1和1 rad / second(对于带通和带阻滤波器)来开发低通滤波器原型。 然后,它计算低通滤波器满足阻带规格所需的最小阶数。

举例:

对于以1000 Hz采样的数据,设计一个低通滤波器,其0至40 Hz的通带中的波纹不应超过3 dB,阻带的衰减至少应为60 dB。 查找滤波器阶数和截止频率。

Wp = 40/500;
Ws = 150/500;
[n,Wn] = buttord(Wp,Ws,3,60)
结果为:
n = 5
Wn = 0.0810

根据二阶部分指定滤波器,并绘制频率响应。

[z,p,k] = butter(n,Wn);
sos = zp2sos(z,p,k);
freqz(sos,512,1000)
title(sprintf('n = %d Butterworth Lowpass Filter',n))

结果为:

2、butter

[b,a] = butter(n,Wn)

[b,a] = butter(n,Wn,ftype)

[z,p,k] = butter(___)

[A,B,C,D] = butter(___)

[___] = butter(___,'s')

[b,a] = butter(n,Wn)返回归一化截止频率Wn的n阶低通数字巴特沃斯滤波器的传递函数系数。

[b,a] = butter(n,Wn,ftype)根据ftype的值和Wn的元素数来设计低通,高通,带通或带阻Butterworth滤波器。最终的带通和带阻设计约为2n。
注意:有关影响形成传递函数的数值问题的信息,请参阅限制。

[z,p,k] = butter(___)设计一个低通,高通,带通或带阻数字巴特沃斯滤波器,并返回其零,极点和增益。该语法可以包括先前语法中的任何输入参数。

[A,B,C,D] = butter(___)设计一个低通,高通,带通或带阻数字Butterworth滤波器,并返回指定其状态空间表示形式的矩阵。

[___] = butter(___,'s)设计一个截止角频率为Wn的低通,高通,带通或带阻模拟巴特沃斯滤波器。

n —滤波器阶数
整数标量
滤波器的阶数,指定为整数标量。

数据类型:双精度

(1)Wn-截止频率
标量| 二元向量
截止频率,指定为标量或二元素矢量。 截止频率是滤波器的幅度响应为1 /√2的频率。

如果Wn是标量,则butter将设计一个截止频率为Wn的低通或高通滤波器。
如果Wn是二元素矢量[w1 w2],其中w1 <w2,则butter设计一个具有较低截止频率w1和较高截止频率w2的带通或带阻滤波器。
对于数字滤波器,截止频率必须在0到1之间,其中1对应于奈奎斯特速率-采样速率的一半或πrad / sample。
对于模拟滤波器,截止频率必须以弧度/秒表示,并且可以取任何正值。
数据类型:双精度

(2)

ftype —过滤器类型
“low” | “bandpass” | 'high'| 'stop'
过滤器类型,指定为以下之一:

“low”指定截止频率为Wn的低通滤波器。 “low”是标量Wn的默认值。
“high”指定截止频率为Wn的高通滤波器。
如果Wn是一个二元素矢量,则“ bandpass”指定2n阶的带通滤波器。 当Wn具有两个元素时,默认设置为'bandpass'。
如果Wn是二元素矢量,则“ stop”指定2n阶的带阻滤波器。

(3)b,a-传递函数系数
行向量
滤波器的传递函数系数,对于低通和高通滤波器,返回为长度n + 1的行向量;对于带通和带阻滤波器,返回为2n + 1的行向量。

对于数字滤波器,传递函数用b和a表示为

对于模拟滤波器,传递函数用b和a表示为

z,p,k-零点,极点和增益
列向量,标量
滤波器的零点,极点和增益作为长度为n的两个列向量(对于带通和带阻设计为2n)和一个标量返回。

对于数字滤波器,传递函数用z,p和k表示为

A,B,C,D —状态空间矩阵
矩阵
过滤器的状态空间表示形式,以矩阵形式返回。 如果对于低通和高通设计,m = n,对于带通和带阻滤波器,m = 2n,则A为m×m,B为m×1,C为1×m,D为1×1。

对于数字滤波器,状态空间矩阵通过以下方式将状态向量x,输入u和输出y相关联:

举例:

设计一个截止频率为300 Hz的6阶低通巴特沃斯滤波器,对于以1000 Hz采样的数据,其对应于rad / sample。 绘制其幅度和相位响应。 用它来过滤1000个样本的随机信号。

fc = 300;
fs = 1000;[b,a] = butter(6,fc/(fs/2));
freqz(b,a)

dataIn = randn(1000,1);
dataOut = filter(b,a,dataIn);

设计6阶Butterworth带阻滤波器归一化的边沿频率为rad/sample。
绘制其幅度和相位响应。 用它来过滤随机数据。

[b,a] = butter(3,[0.2 0.6],'stop');
freqz(b,a)

dataIn = randn(1000,1);
dataOut = filter(b,a,dataIn);

高通巴特沃斯滤波器

设计一个9阶高通巴特沃斯滤波器。 指定300 Hz的截止频率,对于以1000 Hz采样的数据,它对应于rad / sample。 绘制幅度和相位响应。 将零,极点和增益转换为二阶部分,以供fvtool使用。

[z,p,k] = butter(9,300/500,'high');
sos = zp2sos(z,p,k);
fvtool(sos,'Analysis','freq')

带通巴特沃斯滤波器

设计一个20阶Butterworth带通滤波器,其较低的截止频率为500 Hz,较高的截止频率为560 Hz。 指定1500 Hz的采样率。 使用状态空间表示。 使用designfilt设计一个相同的过滤器。

[A,B,C,D] = butter(10,[500 560]/750);
d = designfilt('bandpassiir','FilterOrder',20, ...'HalfPowerFrequency1',500,'HalfPowerFrequency2',560, ...'SampleRate',1500);

将状态空间表示形式转换为二阶部分。 使用fvtool可视化频率响应。

sos = ss2sos(A,B,C,D);
fvt = fvtool(sos,d,'Fs',1500);
legend(fvt,'butter','designfilt')

模拟IIR低通滤波器的比较

设计一个截止频率为2 GHz的5阶模拟Butterworth低通滤波器。 乘以将频率转换为每秒弧度。 计算滤波器在4096点的频率响应。

n = 5;
f = 2e9;[zb,pb,kb] = butter(n,2*pi*f,'s');
[bb,ab] = zp2tf(zb,pb,kb);
[hb,wb] = freqs(bb,ab,4096);

Design a 5th-order Chebyshev Type I filter with the same edge frequency and 3 dB of passband ripple. Compute its frequency response.

[z1,p1,k1] = cheby1(n,3,2*pi*f,'s');
[b1,a1] = zp2tf(z1,p1,k1);
[h1,w1] = freqs(b1,a1,4096);

Design a 5th-order Chebyshev Type II filter with the same edge frequency and 30 dB of stopband attenuation. Compute its frequency response.

[z2,p2,k2] = cheby2(n,30,2*pi*f,'s');
[b2,a2] = zp2tf(z2,p2,k2);
[h2,w2] = freqs(b2,a2,4096);

Design a 5th-order elliptic filter with the same edge frequency, 3 dB of passband ripple, and 30 dB of stopband attenuation. Compute its frequency response.

[ze,pe,ke] = ellip(n,3,30,2*pi*f,'s');
[be,ae] = zp2tf(ze,pe,ke);
[he,we] = freqs(be,ae,4096);

Plot the attenuation in decibels. Express the frequency in gigahertz. Compare the filters.

plot(wb/(2e9*pi),mag2db(abs(hb)))
hold on
plot(w1/(2e9*pi),mag2db(abs(h1)))
plot(w2/(2e9*pi),mag2db(abs(h2)))
plot(we/(2e9*pi),mag2db(abs(he)))
axis([0 4 -40 5])
grid
xlabel('Frequency (GHz)')
ylabel('Attenuation (dB)')
legend('butter','cheby1','cheby2','ellip')

Butterworth和Chebyshev II型滤波器具有平坦的通带和较宽的过渡带。 Chebyshev I型和椭圆滤波器的滚降速度更快,但具有通带纹波。 Chebyshev II型设计功能的输入频率设置了阻带的开始而不是通带的结束。

MATLAB IIR滤波器设计函数buttord与butter相关推荐

  1. butter滤波器是iir吗_MATLAB IIR滤波器设计函数buttord与butter

    (4)Ws -阻带截止频率 标量| 二元向量 阻带截止频率,指定为标量或二元向量,值在0到1之间,其中1对应于归一化的奈奎斯特频率πrad / sample. 数据类型:单| 双 (5)Rp-通带纹波 ...

  2. matlab iir滤波器设计 实验报告,基于MATLAB的IIR滤波器设计与实现

    由于电力系统中非线性电子元件的大量使用,使得谐波污染问题日益严重,当谐波含量超过一定限度时就可能对电网和用户造成极大的危害,且增加线路损耗,降低线路传输能力,干扰通信信号等.因此,应该积极寻找一种治理 ...

  3. 算法学习 - 模拟滤波器(巴特沃斯、贝塞尔、切比雪夫、椭圆)及IIR滤波器设计

    摘要: 在进行信号处理算法的嵌入式代码实现时,经常需要设计滤波器来对信号进行预处理或者后处理.常用的有IIR滤波器和FIR滤波器.虽然IIR滤波器在稳定性和相位响应上比FIR滤波器较差,但是在相同滤波 ...

  4. IIR滤波器设计(调用MATLAB IIR函数来实现)

    转载请注明文章来源 – http://blog.csdn.net/v_hyx ,请勿用于任何商业用途 对于滤波器设计,以前虽然学过相关的理论(现代数字信号处理和DSP设计),但一直不求甚解,也没用过. ...

  5. 基于MATLAB的IIR滤波器设计与实现

    基于MATLAB的IIR滤波器设计与实现 IIR滤波器的设计主要有经典设计法.直接设计法和最大平滑滤波器设计法三种方法. 1.经典设计法是基于模拟滤波器的变换原理,首先根据滤波器的技术指标设计出相应的 ...

  6. scipy Matlab-style IIR 滤波器设计上(Butterworth\Chebyshev type I \Chebyshev type II )

    scipy Matlab-style IIR 滤波器设计上(Butterworth\Chebyshev type I \Chebyshev type II ) 各种滤波接口 滤波器接口 含义 butt ...

  7. 数字信号处理6:IIR滤波器设计

    IIR滤波器设计 文章目录 IIR滤波器设计 1. 简介 2. 设计步骤简明 3. 拉普拉斯变换和Z变换 3.1 拉普拉斯变换 3.2 Z变换 4. 双线性变换法 4.1 模拟域与数字域的映射 4.2 ...

  8. [Matlab]FIR滤波器设计:(基本窗函数FIR滤波器设计)

    [Matlab]FIR滤波器设计:(基本窗函数FIR滤波器设计) ​ IIR滤波器主要设计方法先设计一个模拟低通滤波器,然后把它转化为形式上的数字滤波器.但对于FIR滤波器来说,设计方法的关键要求之一 ...

  9. [Matlab]FIR滤波器设计:(FIR滤波器的结构)

    [Matlab]FIR滤波器设计:(FIR滤波器的结构) FIR(Finite Impulse Response)滤波器:有限长单位冲激响应滤波器,又称为非递归型滤波器,是一种在数字信号领域应用非常广 ...

最新文章

  1. 提高Web性能的前端优化技巧总结
  2. 代码审计_strcmp比较字符串
  3. android调用另一app的xml,Android 7.0+调用其他App打开文件
  4. python的for语句中i未被定义_python – PyLint:使用可能未定义的循环变量警告
  5. scala case class 继承_数字硬件系统设计之一:Scala快速入门(2)
  6. import package的问题
  7. 我们真的需要JWT吗?
  8. c++ httpserver 服务器
  9. R 语言 Windows 环境 安装与Windows下制作R的package--Rtools
  10. 红橙Darren视频笔记 热更新 bsdiff bspatch 在Android设备上的应用 架构篇1完结篇
  11. 参考优秀案例,让你设计的网页更惊艳?
  12. 查看linux服务器内存使用情况,不够时创建Swap、手动 cached
  13. linux ape,Linux下APE歌曲的制作
  14. 任小龙 mysql笔记_小码哥-任小龙Java笔记-面向对象的全部笔记.pdf
  15. pycharm在win7下键盘错乱
  16. 1GB等于2的多少次方
  17. 相机拍摄单色模式MOV视频可以恢复彩色吗?
  18. OpenGL--摄像机漫游
  19. ARM SIMD NEON 简介 (翻译自 Introducing NEON Development Article)
  20. win7系统下如何在虚拟机中安装Linux系统

热门文章

  1. c java交互,Java与C交互
  2. python中对象和类的关系_Python面向对象之类与类之间的关系
  3. spring boot logback_logstash配合spring boot-logback项目实时传输日志
  4. 设计模式—抽象工厂模式(思维导图)
  5. UnityShader21:程序纹理
  6. C#基础2:简单乘法表
  7. 2018C/C++蓝桥杯解析
  8. 后缀数组2.0--Height数组(bzoj 1717: [Usaco2006 Dec]Milk Patterns 产奶的模式)
  9. bzoj 1665: [Usaco2006 Open]The Climbing Wall 攀岩(最短路)
  10. 有长度要求的区间最大值