Butterworth滤波器最先由英国工程师Stephen Butterworth于1930年发表在英国《无线电工程》期刊的名为“On the Theory of Filter Amplifiers”论文中提出。来自90余年前的古老智慧。

巴特沃斯滤波器在通带的频率响应曲线最平滑,其|H(jω)|^2在ω=0点的1至2N-1阶导数值为0,所以巴特沃斯滤波器也被称为也被称作最大平坦滤波器。

巴特沃斯低通滤波器的振幅平方对频率的公式为

使用Python做出不同阶数的Butterworth滤波器的频率响应如下图所示。阶数N=2,4,8,截止频率均为2。Butterworth模拟低通滤波器的频率响应(左:幅频响应,右:相频响应)

容易见得,Butterworth滤波器的阶数越高,幅频响应越陡峭,滤波效果越优越。

我采用了Python(v3.7.7)实现Butterworth模拟低通滤波器。具体采用了scipy(v1.6.0)的第三方包,来进行信号与系统的基本运算;采用了matplotlib(v3.3.3)作图。代码如下。

import matplotlib.pyplot as plt
import numpy as np
import scipy.signal as signalw = 2*np.pi*np.linspace(0, 1, 10000)system2 = signal.butter(2, 2, btype='low', analog=True, output='ba')
w2, H2 = signal.freqresp(system2, w)system4 = signal.butter(4, 2, btype='low', analog=True, output='ba')
w4, H4 = signal.freqresp(system4, w)system8 = signal.butter(8, 2, btype='low', analog=True, output='ba')
w8, H8 = signal.freqresp(system8, w)plt.figure(figsize=(8,3))
plt.subplot(121)
plt.plot(w2, abs(H2), 'g', label='$N=2$')
plt.plot(w4, abs(H4), 'royalblue', label='$N=4$')
plt.plot(w8, abs(H8), 'orangered', label='$N=8$')
plt.axvline(2, ymin=0, ymax=0.69, color='black', ls='dashed')
plt.axhline(0.707, xmin=0, xmax=0.335, color='black', ls='dashed')
plt.grid(True)
plt.ylabel('$|H(j\Omega)|$')
plt.xlabel('$\Omega$')
plt.legend(fontsize=10, loc='upper right')plt.subplot(122)
plt.plot(w2, np.angle(H2), 'g')
plt.plot(w4, np.angle(H4), 'royalblue')
plt.plot(w8, np.angle(H8), 'orangered')
plt.grid(True)
plt.ylabel(r'$\angle H(j\Omega)$')
plt.xlabel('$\Omega$')
plt.tight_layout()
plt.savefig('3_Butterworth filter.png', dpi=600)
plt.show()

主要使用了scipy的信号处理包signal。有Butterworth滤波器的专属API

# https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.butter.html#scipy.signal.butter
scipy.signal.butter(N, Wn, btype='low', analog=False, output='ba', fs=None)"""
Parameters:N: int The order of the filter.
Wn: array_like The critical frequency or frequencies.
btype: {'lowpass', 'highpass', 'bandpass', 'bandstop'}, optional The type of filter. Default is 'lowpass'.
analog: bool, optional When True, return an analog filter, otherwise a digital filter is returned.
output: {'ba', 'zpk', 'sos'}, optional Type of output: numerator/denominator ('ba'), pole-zero ('zpk'), or second-order sections ('sos'). Default is 'ba' for backwards compatibility, but 'sos' should be used for general-purpose filtering.
fs: float, optional The sampling frequency of the digital system.
Added in 1.2.0Returns:b, a : ndarray, ndarray Numerator (b) and denominator (a) polynomials of the IIR filter. Only returned if output='ba'.
z, p, k : ndarray, ndarray, float Zeros, poles, and system gain of the IIR filter transfer function. Only returned if output='zpk'.
sos: ndarray Second-order sections representation of the IIR filter. Only returned if output=='sos'.
"""

N阶Butterworth滤波器的频率响应(Python实现)相关推荐

  1. MATLAB--DSP DAY2:butterworth滤波器

    1.butterworth滤波器 最基础的butterworth滤波器: 根据四个参数决定N,ωn,根据N.ωn产生有理分式的分子分母,系数再据此产生对应的传输函数 注: Wp:通带边界频率.当输入的 ...

  2. 信号内插(零阶保持滤波器+插零)

    信号内插 1 信号内插0 2信号内插输入信号(零阶保持滤波) 1 信号内插0 % // 程序功能说明: % // 1.用100M的系统钟产生10M的点频信号RtI(一个周期采10个点) % // 2. ...

  3. 理想低通滤波器、Butterworth滤波器和高斯滤波器

    一.简介 我们知道,在一幅图像中,其低频成分对应者图像变化缓慢的部分,对应着图像大致的相貌和轮廓.而其高频成分则对应着图像变化剧烈的部分,对应着图像的细节(图像的噪声也属于高频成分). 低频滤波器,顾 ...

  4. 理想低通滤波器、Butterworth滤波器和高斯滤波器(matlab)

    一.简介 我们知道,在一幅图像中,其低频成分对应者图像变化缓慢的部分,对应着图像大致的相貌和轮廓.而其高频成分则对应着图像变化剧烈的部分,对应着图像的细节(图像的噪声也属于高频成分). 低频滤波器,顾 ...

  5. 理想低通滤波器、Butterworth滤波器和高斯滤波器(matlab)1

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/cjsh_123456/article/details/79342300 一.简介 我们知道,在一幅图 ...

  6. [就酱的新征程]数字处理仿真与应用实验二:模拟低通 Butterworth 滤波器 IIR 滤波器(Matlab)

    @数字处理仿真与应用实验二:模拟低通 Butterworth 滤波器 IIR 滤波器(Matlab) 这学期数字处理仿真与应用实验的记录 不多说,进入正题吧~ 实验要求 利用模拟滤波器原型设计 IIR ...

  7. 滤波器电路的Python仿真

    ➤ 00仿真背景 在 怎么DIY一个粒子检测器 中给出了一个DIY的粒子检测器所使用到 信号放大电路图 ,经过简化整理之后,重新绘制如下. 这是一个带通滤波器,它包括有U1:A 及其反馈阻容(C1,C ...

  8. java巴特沃斯滤波器编程_巴特沃斯(Butterworth)滤波器 (1)

    下面深入浅出讲一下Butterworth原理及其代码编写. 1. 首先考虑一个归一化的低通滤波器(截止频率是1),其幅度公式如下: 当n->∞时,得到一个理想的低通滤波反馈: ω<1时,增 ...

  9. Butterworth滤波器

    Butterworth低通滤波器传递函数为: 是截至频率,n为函数的阶.一般取使H(u,v)最大值下降到最大值的一般时的D(u,v)作为截至频率. 与理想低通滤波器相比,高低频之间过渡较为平滑,因此滤 ...

  10. python高阶函数map_简单了解python高阶函数map/reduce

    高阶函数map/reduce Python内建了map()和reduce()函数. 我们先看map.map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每 ...

最新文章

  1. 极客邦科技旗下TGO鲲鹏会成立美国硅谷分会
  2. 2020年推荐系统工程师炼丹手册RecSys版
  3. sql 存储过程中top 后面跟参数的问题
  4. 汉诺塔的递归实现,看完就懂了
  5. 将军令:数据安全平台建设实践 1
  6. 2020秋招CV面试知识点汇总
  7. 【机器学习】KNN回归
  8. zul使用java_zk中zul页面中组件的id和java类中的变量绑定实现
  9. Sybase的安装、配置及使用(五)
  10. 褚霸:不要为了开源而开源
  11. 数分下第3讲 (8.1节):空间直角坐标系和向量运算
  12. x86 和 x64 到底是什么意思?
  13. html 名人名言源代码,基于JQuery及AJAX实现名人名言随机生成器_咋地 _前端开发者...
  14. 触屏笔和电容笔哪个好?非常值得入手的电容笔推荐
  15. 酷炫的可视化工具包 - cufflinks
  16. Java:面向Web和移动应用的Java开发的增长
  17. 【mcuclub】称重-HX711
  18. 海盗王实现物品999个堆叠
  19. 基于Beacon技术的智慧医院解决方案
  20. 80老翁谈人生(6):一生追梦的历程

热门文章

  1. OneNote打开其他账号的笔记共享
  2. 【ZeyFra个人随记02】23考研,重新出发,决不投降,真正的为自己脚踏实地认真努力拼一次吧
  3. 【Linux】循序渐进学运维-学习方法篇
  4. java全栈工程师要求_Java全栈工程师
  5. cpu性能排行 服务器,服务器cpu天梯图2020 至强处理器天梯排名
  6. MWEC:一种基于多语义词向量的中文新词发现方法
  7. tc275怎么移植到ram中去,把函数
  8. 如何提高程序员的键盘使用效率之我见
  9. 基于等级保护2.0标准体系的医院信息化安全建设与研究
  10. Unicode 中文,日文,西欧语言Unicode编码域(区间)