python均值滤波_matlab对数据进行滤波

python均值滤波_matlab对数据进行滤波在 Python 中实现数据滤波器可以通过使用 scipy signal 模块中的函数来完成 下面是一些基本的滤波方法及其实现示例 1 FIR 滤波器 使用 scipy signal firwin 函数设计有限脉冲响应 FIR 滤波器 并通过 lfilter 函数进行滤波 pythonimport numpy as npimport matplotlib pyplot as

在Python中实现数据滤波器可以通过使用`scipy.signal`模块中的函数来完成。下面是一些基本的滤波方法及其实现示例:

1. FIR滤波器

使用`scipy.signal.firwin`函数设计有限脉冲响应(FIR)滤波器,并通过`lfilter`函数进行滤波。

python

import numpy as np

import matplotlib.pyplot as plt

from scipy.signal import firwin, lfilter

设计一个截止频率为0.5的FIR低通滤波器

b = firwin(80, 0.5, window=('kaiser', 8))

生成测试信号

t = np.linspace(0, 1, 8000)

x = np.sin(2 * np.pi * 50 * t) + np.sin(2 * np.pi * 120 * t)

应用滤波器

y = lfilter(b, 1.0, x)

绘制原始信号和滤波后的信号

plt.figure()

plt.subplot(2, 1, 1)

plt.plot(t, x)

plt.title('Original Signal')

plt.subplot(2, 1, 2)

plt.plot(t, y)

plt.title('Filtered Signal')

plt.tight_layout()

plt.show()

2. IIR滤波器

使用`scipy.signal.butter`函数设计无限脉冲响应(IIR)滤波器,并通过`lfilter`函数进行滤波。

python

import numpy as np

import matplotlib.pyplot as plt

from scipy.signal import butter, lfilter

设计一个截止频率为3.667 Hz的低通IIR滤波器

order = 6

fs = 30.0 采样率,Hz

cutoff = 3.667 截止频率

b, a = butter(order, cutoff / fs, btype='low', analog=False)

生成测试信号

T = 5.0 时间长度

ns = int(T * fs) 样本总数

t = np.linspace(0, T, ns)

x = np.sin(2 * np.pi * 50 * t) + np.sin(2 * np.pi * 120 * t)

应用滤波器

y = lfilter(b, a, x)

绘制原始信号和滤波后的信号

plt.figure()

plt.subplot(2, 1, 1)

plt.plot(t, x)

plt.title('Original Signal')

plt.subplot(2, 1, 2)

plt.plot(t, y)

plt.title('Filtered Signal')

plt.tight_layout()

plt.show()

3. 维纳滤波

使用`scipy.signal.wiener`函数进行维纳滤波,该方法用于去除噪声。

python

import numpy as np

import matplotlib.pyplot as plt

from scipy.signal import wiener

生成测试信号并添加噪声

t = np.linspace(-1, 1, 201)

x = (np.sin(1.5 * np.pi * t * (1 - t)) + 0.1 * np.sin(2.5 * np.pi * t + 1) + 0.18 * np.cos(7.6 * np.pi * t))

xn = x + np.random.rand(len(t)) 添加噪声

应用维纳滤波

w = wiener(xn)

绘制原始信号和滤波后的信号

plt.scatter(t, xn, marker='.', label='Original')

plt.plot(t, w, c='r', label='Wiener')

plt.legend()

plt.show()

4. 滤波器设计

`scipy.signal`模块还提供了设计巴特沃斯、切比雪夫和椭圆滤波器的功能。

编程小号
上一篇 2026-04-03 17:24
下一篇 2026-04-03 17:21

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://sigusoft.com/bj/63382.html