Python 一维信号高斯滤波:代码示例与解释
以下是使用 Python 实现一维信号高斯滤波的示例代码:
import numpy as np
import scipy.signal as signal
# 生成一维信号
x = np.linspace(-10, 10, 1000)
y = np.sin(x) + np.random.normal(0, 0.1, 1000)
# 定义高斯滤波器
fs = 1000 # 采样率
fc = 50 # 截止频率
bw = 20 # 带宽
N = int(np.ceil(bw / (2 * np.sqrt(2 * np.log(2)))))
n = np.arange(-N, N+1)
h = np.exp(-0.5 * (n / (0.5 * bw)) ** 2)
h = h / np.sum(h)
# 使用高斯滤波器进行滤波
y_filt = signal.convolve(y, h, mode='same')
# 绘制原始信号和滤波后的信号
import matplotlib.pyplot as plt
plt.plot(x, y, label='raw signal')
plt.plot(x, y_filt, label='filtered signal')
plt.legend()
plt.show()
在这个示例中,我们首先生成了一个包含噪声的正弦波信号。然后,我们定义了一个高斯滤波器,该滤波器具有截止频率为 50 Hz,带宽为 20 Hz。我们使用 scipy.signal 模块中的 convolve 函数将滤波器应用于信号。最后,我们绘制了原始信号和滤波后的信号,以便进行比较。
原文地址: https://www.cveoy.top/t/topic/nc8i 著作权归作者所有。请勿转载和采集!