文章目录

  • python库函数之scipy.signal.butter()
    • 函数参数
    • 设计模拟滤波器
    • 设计数字滤波器
  • 2021.06.03 有位博主评论了这篇博客(评论已被删除),特此说明。

python库函数之scipy.signal.butter()

参考官方的API文档(https://docs.scipy.org/doc/scipy/reference/signal.html#module-scipy.signal)
注意最好将scipy升级至最新版本。笔者之前使用v1.1.1,其函数的部分参数与新版本的不一样。

scipy.signal.butter(N, Wn, btype=‘low’, analog=False, output=‘ba’, fs=None)

函数参数

  • N:滤波器阶数
  • Wn:3dB带宽点。
  • btype:滤波器类型,可选{‘lowpass’, ‘highpass’, ‘bandpass’, ‘bandstop’},默认是低通滤波器。
  • analog : 布尔值。True表示模拟滤波器。False表示数字滤波器。默认是数字滤波器。
  • output:'ba’表示’输出分子和分母的系数;‘zpk’表示输出零极点;‘sos’表示输出second-order sections. 默认是‘ba’
  • fs:数字滤波器采样率

设计模拟滤波器

>>> from scipy import signal
>>> import matplotlib.pyplot as plt
>>>
>>> b, a = signal.butter(4, 100, 'low', analog=True)
>>> w, h = signal.freqs(b, a)                        # 由分子分母的系数求解频率响应,w为频率,h为对应的响应。
>>> plt.semilogx(w, 20 * np.log10(abs(h)))     #绘制幅频响应,频率轴取对数,幅度轴转换成dB。
>>> plt.title('Butterworth filter frequency response')
>>> plt.xlabel('Frequency [radians / second]')
>>> plt.ylabel('Amplitude [dB]')
>>> plt.margins(0, 0.1)
>>> plt.grid(which='both', axis='both')
>>> plt.axvline(100, color='green') # cutoff frequency
>>> plt.show()

设计数字滤波器

>>> t = np.linspace(0, 1, 1000, False)  # 1 second
>>> sig = np.sin(2*np.pi*10*t) + np.sin(2*np.pi*20*t)    # 构造10hz和20hz的两个信号
>>> fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True)
>>> ax1.plot(t, sig)
>>> ax1.set_title('10 Hz and 20 Hz sinusoids')
>>> ax1.axis([0, 1, -2, 2])>>>
>>> sos = signal.butter(10, 15, 'hp', fs=1000, output='sos')     #采样率为1000hz,带宽为15hz,输出sos
>>> filtered = signal.sosfilt(sos, sig)             #将信号和通过滤波器作用,得到滤波以后的结果。在这里sos有点像冲击响应,这个函数有点像卷积的作用。
>>> ax2.plot(t, filtered)
>>> ax2.set_title('After 15 Hz high-pass filter')
>>> ax2.axis([0, 1, -2, 2])
>>> ax2.set_xlabel('Time [seconds]')
>>> plt.tight_layout()
>>> plt.show()

2021.06.03 有位博主评论了这篇博客(评论已被删除),特此说明。

  • 在设计数字滤波器的时候,如果没有指定参数fs,则wn要使用归一化频率。比如本示例中,可以将代码改为
sos = signal.butter(10, 15/500, 'hp', output='sos')     #采
  • 但是如果指定了fs参数,则wn使用真实频率就可以。
  • 当年写这篇博客的时候也是从官网搬过来的,写得并不详细,见谅。

python库函数之scipy.signal——滤波器设计相关推荐

  1. Python知识: scipy signal.chirp用法例

    一.说明 scipy signal.chirp是产生波形的函数,可以虚拟出声音波形.与Wave配合可以实现虚拟音响. 二.函数用法 scipy.signal.chirp(t, f0, t1, f1, ...

  2. python滤波器设计

    一.在matlab输入fdatool,打开滤波器设计窗口,指定滤波器.Specify order(设定阶数).Fs(采样率).Fpass(通带).Fstop(阻带),观察滤波器效果. 二.使用pyth ...

  3. Python在信号与系统(1)——Hilbert兑换,Hilbert在国家统计局的包络检测应用,FIR_LPF滤波器设计,格鲁吉亚也迫使高FM(PM)调制...

    谢谢董老师,董老师是个好老师. 心情久久不能平静,主要是高频这门课的分析方法实在是让我难以理解,公式也背只是,还是放放吧. 近期厌恶了Matlab臃肿的体积和频繁的读写对我的Mac的损害,所以学习了一 ...

  4. python 希尔伯特变换_Python在信号与系统中的应用(1)——Hilbert变换,Hilbert在单边带包络检波的应用,FIR_LPF滤波器设计,还有逼格高高的FM(PM)调制...

    多谢董老师,董老师是个好老师! 心情久久不能平静,主要是高频这门课的分析方法实在是让我难以理解,公式也背不过,还是放放吧. 最近厌恶了Matlab臃肿的体积和频繁的读写对我的Mac的损害,所以学习了一 ...

  5. python signal滤波器使用说明

    在使用Python进行信号处理过程中,利用 scipy.signal.filtfilt()可以快速帮助实现信号的滤波. 1.函数的介绍 (1).滤波函数 scipy.signal.filtfilt(b ...

  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. scipy Matlab-style IIR 滤波器设计下(Elliptic \Bessel \IIR-notch\IIR-peak\IIR-comb)

    1.Elliptic 椭圆滤波器也被称为Cauer或Zo lotta rev滤波器,它最大限度地提高了频率响应的通带和阻带之间的过渡速率,但却牺牲了两者的纹波,并增加了阶跃响应中的振铃. 当rp接近0 ...

  8. 巴特沃斯滤波器python_如何用Scipy.signal.bu实现带通巴特沃斯滤波器

    您可以跳过button的使用,而只需为过滤器选择一个顺序,看看它是否符合您的过滤条件.要生成带通滤波器的滤波器系数,请将滤波器阶数.截止频率Wn=[low, high](表示为奈奎斯特频率的分数,即采 ...

  9. python 波形包络线_Python在信号与系统中的应用(1)——Hilbert变换,Hilbert在单边带包络检波的应用,FIR_LPF滤波器设计,还有逼格高高的FM(PM)调制...

    多谢董老师,董老师是个好老师! 心情久久不能平静,主要是高频这门课的分析方法实在是让我难以理解,公式也背不过,还是放放吧. 最近厌恶了Matlab臃肿的体积和频繁的读写对我的Mac的损害,所以学习了一 ...

最新文章

  1. oracle+olh+hive,hadoop+hive+hbase的简单安装 | YallonKing
  2. mybatis-Batch Executor
  3. java jnlp被阻止_JNLP应用程序Web服务访问被拒绝 - java.io.FilePermission
  4. easyui数据表格显示复选框_【Excel技巧】使用控件一键切换实现单位元和万元随意显示...
  5. 【转载保存】lucene优秀文章整理
  6. 设计灵感|排版太死板?提高品质的角度很重要
  7. numpy 辨异 (五)—— numpy.ravel() vs numpy.flatten()
  8. [转载] python difference用法_set.difference() 的用法(python3)_python3 set集合,三元运算以及
  9. python导入类有红线_解决Python中导入自己写的类,被划红线,但不影响执行的问题...
  10. 修改DevExpress中英文提示,将英文改为中文
  11. UPS电源知识(开发板销售http://huarm.taobao.com/ )
  12. origin自定义拟合,拟合公式带有复数i怎么办?用matlab能是实现吗?怎么实现呢,可以的话额能否给个示例。
  13. 互联网公司招聘--奇虎360--软件测试--笔试题
  14. python点到直线的距离_点到直线距离公式的几种推导
  15. UV-a1586-分子式
  16. 智能驾驶是什么意思_智能驾驶L1L2L3L4到底是什么意思,再不知道就OUT啦
  17. 微软的teredo服务器,Win7使用teredo连接IPv6的方法
  18. hdu 3037 插板法组合 + lucas定理
  19. MySQL使用大全和JDBC使用_五万字的详细笔记
  20. 利用IDEA的远程debug进行远程代码调试。

热门文章

  1. c# wpf页面调用软键盘
  2. new与allocator
  3. vue.js-跳出forEach循环
  4. VB中EOF和BOF
  5. 手把手教学之如何设计财务对账系统
  6. WPS Office下载链接
  7. SSM框架中医电子商务网站中医购物网站中医书籍中医药品药材(idea开发javaweb-javaee-j2ee-springboot)
  8. 方舟手游服务器设置文件翻译,方舟生存进化单机模式参数ini文件设置教程 附参数选项翻译...
  9. 大脑理论与智能机器探索者——专访Jeff Hawkins
  10. win11 win10网络共享设置[设置时缝缝补补算是可以运行]