python 经典数字滤波实例

 更新时间:2019年12月16日 16:47:40   作者:weixin_42528089  
今天小编就为大家分享一篇python 经典数字滤波实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

数字滤波分为 IIR 滤波,和FIR 滤波。

FIR 滤波:

import scipy.signal as signal
import numpy as np
import pylab as pl
import matplotlib.pyplot as plt
import matplotlib
from scipy import signal
b = signal.firwin(80, 0.5, window=('kaiser', 8))
w, h = signal.freqz(b)
 
import matplotlib.pyplot as plt
fig, ax1 = plt.subplots()
ax1.set_title('Digital filter frequency response')
 
ax1.plot(w, 20 * np.log10(abs(h)), 'b')
ax1.set_ylabel('Amplitude [dB]', color='b')
ax1.set_xlabel('Frequency [rad/sample]')
 
ax2 = ax1.twinx()
angles = np.unwrap(np.angle(h))
ax2.plot(w, angles, 'g')
ax2.set_ylabel('Angle (radians)', color='g')
ax2.grid()
ax2.axis('tight')
plt.show()

运行结果:

IIR 滤波器:

from scipy import signal
import matplotlib.pyplot as plt
import matplotlib.ticker
import numpy as np
# 蓝色的是频谱图,绿色的是相位图
wp = 0.2
ws = 0.3
gpass = 1
gstop = 40
system = signal.iirdesign(wp, ws, gpass, gstop)
w, h = signal.freqz(*system)
fig, ax1 = plt.subplots()
ax1.set_title('Digital filter frequency response')
ax1.plot(w, 20 * np.log10(abs(h)), 'b')
ax1.set_ylabel('Amplitude [dB]', color='b')
ax1.set_xlabel('Frequency [rad/sample]')
ax1.grid()
ax1.set_ylim([-110, 10])
 
nticks = 8
ax1.yaxis.set_major_locator(matplotlib.ticker.LinearLocator(nticks))
 
plt.show()

运行结果:

IIR 滤波器中cheyb2 滤波器的运用

from  scipy import signal
import matplotlib.pyplot as plt
import numpy as np
b, a = signal.cheby2(4, 40, 100, 'low', analog=True)
w, h = signal.freqs(b, a)
plt.semilogx(w, 20 * np.log10(abs(h)))#用于绘制折线图,两个函数的 x 轴、y 轴分别是指数型的。
#plt.plot(w, 20 * np.log10(abs(h)))
plt.title('Chebyshev Type II frequency response (rs=40)')
plt.xlabel('Frequency [radians / second]')
plt.ylabel('Amplitude [dB]')
plt.margins(0, 0.1)#  not sure
plt.grid(which='both', axis='both')
 
t = np.linspace(0, 1, 1000, False) # 1 second
sig = np.sin(2*np.pi*10*t) + np.sin(2*np.pi*20*t)
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.cheby2(12, 20, 17, 'hp', fs=1000, output='sos')
filtered = signal.sosfilt(sos, sig)
ax2.plot(t, filtered)
ax2.set_title('After 17 Hz high-pass filter')
ax2.axis([0, 1, -2, 2])
ax2.set_xlabel('Time [seconds]')
 
plt.show()

以上这篇python 经典数字滤波实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 使用Python的PIL库给图像进行过滤

    使用Python的PIL库给图像进行过滤

    PIL是一个用于图像处理的Python库,它提供了各种功能,包括加载、保存、编辑和处理图像,你可以使用PIL库进行图像缩放、裁剪、旋转、滤镜应用等操作,本文将介绍如何使用Python的PIL库给图像进行过滤,需要的朋友可以参考下
    2023-08-08
  • python pip安装的包放在哪个目录(site-packages目录的位置)

    python pip安装的包放在哪个目录(site-packages目录的位置)

    这篇文章主要介绍了python pip安装的包放在哪个目录(site-packages目录的位置),通常安装在python安装目录下的lib/site-packages目录下,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • Python利用psutil实现获取硬件,网络和进程信息

    Python利用psutil实现获取硬件,网络和进程信息

    Python 有一个第三方模块叫 psutil,专门用来获取操作系统以及硬件相关的信息,比如:CPU、磁盘、网络、内存等等。下面来看一下它的用法
    2022-07-07
  • python3 正则表达式基础廖雪峰

    python3 正则表达式基础廖雪峰

    正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的
    2020-03-03
  • 学习Python中一些实用的库

    学习Python中一些实用的库

    这篇文章主要介绍了Python学习之盘点一些Python中实用的库,有需要的同学可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2021-09-09
  • Python pyinstaller库的安装配置教程分享

    Python pyinstaller库的安装配置教程分享

    pyinstaller模块主要用于python代码打包成exe程序直接使用,这样在其它电脑上即使没有python环境也是可以运行的。本文就来和大家分享一下pyinstaller库的安装配置教程,希望对大家有所帮助
    2023-04-04
  • Python小进度条显示代码

    Python小进度条显示代码

    今天小编就为大家分享一篇关于Python小进度条显示代码,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Python中按值来获取指定的键

    Python中按值来获取指定的键

    今天小编就为大家分享一篇关于Python中按值来获取指定的键,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Python打印scrapy蜘蛛抓取树结构的方法

    Python打印scrapy蜘蛛抓取树结构的方法

    这篇文章主要介绍了Python打印scrapy蜘蛛抓取树结构的方法,实例分析了打印scrapy蜘蛛抓取树结构的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • Python打包文件执行报错:ModuleNotFoundError: No module named ‘pymssql‘的解决方法

    Python打包文件执行报错:ModuleNotFoundError: No module 

    这篇文章给大家介绍了Python打包文件执行报错:ModuleNotFoundError: No module named ‘pymssql‘的解决方法,如果有遇到相同问题的朋友可以参考阅读一下本文
    2023-10-10

最新评论