python 经典数字滤波实例


Posted in Python onDecember 16, 2019

数字滤波分为 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()

运行结果:

python 经典数字滤波实例

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()

运行结果:

python 经典数字滤波实例

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 相关文章推荐
Django框架下在视图中使用模版的方法
Jul 16 Python
Python引用模块和查找模块路径
Mar 17 Python
Django 多语言教程的实现(i18n)
Jul 07 Python
Python3.4 splinter(模拟填写表单)使用方法
Oct 13 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
Apr 03 Python
解决python多行注释引发缩进错误的问题
Aug 23 Python
Python对称的二叉树多种思路实现方法
Feb 28 Python
jupyter notebook中新建cell的方法与快捷键操作
Apr 22 Python
python 实现音频叠加的示例
Oct 29 Python
如何利用Python matplotlib绘制雷达图
Dec 21 Python
Django中template for如何使用方法
Jan 31 Python
Python Flask搭建yolov3目标检测系统详解流程
Nov 07 Python
Python实现把类当做字典来访问
Dec 16 #Python
python中p-value的实现方式
Dec 16 #Python
基于python读取.mat文件并取出信息
Dec 16 #Python
python基于plotly实现画饼状图代码实例
Dec 16 #Python
python 实现让字典的value 成为列表
Dec 16 #Python
python 列表、字典和集合的添加和删除操作
Dec 16 #Python
python实现字典嵌套列表取值
Dec 16 #Python
You might like
在PHP中PDO解决中文乱码问题的一些补充
2010/09/06 PHP
php获取数组中重复数据的两种方法
2013/06/28 PHP
php生成验证码,缩略图及水印图的类分享
2016/04/07 PHP
PHP基于session.upload_progress 实现文件上传进度显示功能详解
2019/08/09 PHP
[IE&FireFox兼容]JS对select操作
2007/01/07 Javascript
javascript new一个对象的实质
2010/01/07 Javascript
一些常用的JavaScript函数(json)附详细说明
2011/05/25 Javascript
JavaScript根据数据生成百分比图和柱状图的实例代码
2013/07/14 Javascript
javascript实现数字验证码的简单实例
2014/02/10 Javascript
JS控制弹出新页面窗口位置和大小的方法
2015/03/02 Javascript
JS解析XML文件和XML字符串详解
2015/04/17 Javascript
Bootstrap每天必学之媒体对象
2015/11/30 Javascript
使用do...while的方法输入一个月中所有的周日(实例代码)
2016/07/22 Javascript
BootStrap实现手机端轮播图左右滑动事件
2016/10/13 Javascript
JS中传递参数的几种不同方法比较
2017/01/20 Javascript
DOM事件探秘篇
2017/02/15 Javascript
jQuery事件_动力节点Java学院整理
2017/07/05 jQuery
ES6/JavaScript使用技巧分享
2017/12/14 Javascript
微信小程序顶部导航栏滑动tab效果
2019/01/28 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
2020/11/24 Javascript
Python中的random.uniform()函数教程与实例解析
2019/03/02 Python
python mysql自增字段AUTO_INCREMENT值的修改方式
2020/05/18 Python
德国50岁以上交友网站:Lebensfreunde
2020/03/18 全球购物
Marlies Dekkers内衣荷兰官方网店:荷兰奢侈内衣品牌
2020/03/27 全球购物
一套PHP的笔试题
2013/05/31 面试题
运动会开幕式邀请函
2014/01/22 职场文书
座谈会主持词
2014/03/20 职场文书
企业年会主持词
2014/03/27 职场文书
中医学专业自荐信范文
2014/04/01 职场文书
书法大赛策划方案
2014/06/04 职场文书
工地安全标语
2014/06/07 职场文书
关于青春的演讲稿三分钟
2014/08/22 职场文书
刑事和解协议书范本
2014/11/19 职场文书
高考升学宴主持词
2019/06/21 职场文书
Python机器学习之KNN近邻算法
2021/05/14 Python
Vue组件更新数据v-model不生效的解决
2022/04/02 Vue.js