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正则表达式匹配日期与时间的方法

    Python正则表达式匹配日期与时间的方法

    这篇文章主要介绍了Python正则表达式匹配日期与时间的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • 详解Django关于StreamingHttpResponse与FileResponse文件下载的最优方法

    详解Django关于StreamingHttpResponse与FileResponse文件下载的最优方法

    这篇文章主要介绍了详解Django关于StreamingHttpResponse与FileResponse文件下载的最优方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • AI与Python人工智能启发式搜索概念理解

    AI与Python人工智能启发式搜索概念理解

    这篇文章主要为大家介绍了AI与Python启发式搜索概念详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • Python字符串格式化%s%d%f详解

    Python字符串格式化%s%d%f详解

    这篇文章主要介绍了Python字符串格式化%s%d%f详解,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • python获取服务器响应cookie的实例

    python获取服务器响应cookie的实例

    今天小编就为大家分享一篇python获取服务器响应cookie的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • 基于Python实现的影视数据智能分析系统

    基于Python实现的影视数据智能分析系统

    数据分析与可视化是当今数据分析的发展方向,大数据时代,数据资源具有海量特征,数据分析和可视化主要通过Python数据分析来实现,本文给大家介绍了如何基于Python实现的影视数据智能分析系统,文中给出了部分详细代码,感兴趣的朋友跟着小编一起来看看吧
    2024-01-01
  • 彻底理解Python list切片原理

    彻底理解Python list切片原理

    本篇文章主要介绍了Python list切片原理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • python基础之包的导入和__init__.py的介绍

    python基础之包的导入和__init__.py的介绍

    这篇文章主要介绍了python基础之包的导入和__init__.py的相关资料,需要的朋友可以参考下
    2018-01-01
  • numpy实现神经网络反向传播算法的步骤

    numpy实现神经网络反向传播算法的步骤

    这篇文章主要介绍了numpy实现神经网络反向传播算法的步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • python实现多层感知器MLP(基于双月数据集)

    python实现多层感知器MLP(基于双月数据集)

    这篇文章主要为大家详细介绍了python实现多层感知器MLP,基于双月数据集,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01

最新评论