python - 平滑循环数据

标签 python numpy scipy filtering smoothing

我有一个数据数组 Y,其中 Y 是自变量 X(另一个数组)的函数。

X 中的值从 0 到 360 变化,并有环绕。

Y 中的值在 -180 到 180 之间变化,也有环绕。

(也就是说,这些值是围绕圆的角度(以度为单位)。)

有谁知道Python中的任何函数(在numpyscipy等中)能够对我的Y值进行低通滤波作为 X 的函数?

以防万一这令人困惑,下面是示例数据图:

enter image description here

最佳答案

假设你从

开始
import numpy as np

x = np.linspace(0, 360, 360)
y = 5 * np.sin(x / 90. * 3.14) + np.random.randn(360)

plot(x, y, '+');

enter image description here

要执行循环卷积,您可以执行以下操作:

yy = np.concatenate((y, y))
smoothed = np.convolve(np.array([1] * 5), yy)[5: len(x) + 5]

这在每个点都使用前 5 个点(含)的循环平均值。当然,还有其他方法可以做到这一点。

>>> plot(x, smoothed)

enter image description here

关于python - 平滑循环数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36074074/

相关文章:

Python - 字典列表中的值

python - 使用 numpy.fft VS 计算信号 PSD 的前置因素。 scipy.signal.welch

python - else if 在 Python3 中的列表理解中

python - 如何快速屏蔽阵列中的不同切片?

python - 从行中减去行的最小值

python - DGESDD 从 numpy 加载 Lapack 例程失败

python - 在 SciPy 中使用固定参数拟合分布

python - Python : way too low p-values, 中的卡方拟合优度检验但拟合函数正确

python - 在 Python 中循环压缩多个列表

python - 如何对键为 tuple、值为 int 的字典进行排序?