python 经典数字滤波实例
作者:weixin_42528089 时间:2022-08-26 10:23:22
数字滤波分为 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()
来源:https://blog.csdn.net/weixin_42528089/article/details/102893808
标签:python,数字滤波
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Python文件操作类操作实例详解
2023-05-19 04:45:08
详解Python连接oracle的问题记录与解决
2021-04-07 09:38:41
![](https://img.aspxhome.com/file/2023/5/86235_0s.png)
深入浅出Python中三个图像增强库的使用
2021-12-08 08:33:55
![](https://img.aspxhome.com/file/2023/7/71377_0s.jpg)
如何解决AJAX中跨域访问出现'没有权限'的错误
2008-09-11 17:20:00
SQL Server 2008升级报表服务器数据库
2008-11-18 12:36:00
Python抽象类的新写法
2022-12-04 13:39:38
python使用pika库调用rabbitmq交换机模式详解
2024-01-01 06:28:18
![](https://img.aspxhome.com/file/2023/1/91951_0s.png)
在Python中实现字典反转案例
2022-12-17 02:05:46
asp随机数 随机产生N位由数字和字母组成的密码
2011-03-10 10:47:00
Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】 <font color=red>原创</font>
2021-08-21 17:17:21
Python高级特性之闭包与装饰器实例详解
2021-09-19 03:17:25
![](https://img.aspxhome.com/file/2023/3/65473_0s.png)
如何解决“cint和clng的溢出出错”问题?
2009-12-03 20:21:00
Python从零开始创建区块链
2021-02-12 12:21:14
![](https://img.aspxhome.com/file/2023/3/92203_0s.jpg)
使用python解析xml成对应的html示例分享
2022-05-05 21:02:27
Python 图片转数组,二进制互转操作
2023-10-07 17:46:04
![](https://img.aspxhome.com/file/2023/4/89064_0s.png)
使用Python更换外网IP的方法
2021-01-25 04:25:46
Python网络编程使用select实现socket全双工异步通信功能示例
2023-04-10 21:06:59
如何给windows设置定时任务并运行python脚本
2023-09-18 13:40:19
![](https://img.aspxhome.com/file/2023/8/76928_0s.jpg)
OpenCV imread读取图片失败的问题及解决
2021-10-20 06:44:00
![](https://img.aspxhome.com/file/2023/0/92480_0s.png)
MySQL常见错误提示及解决方法
2008-02-23 10:08:00