非线性曲线(多峰)拟合

问题描述 投票:0回答:1

需要帮助将下面的红色图平滑为看起来像蓝色图的东西。

我尝试过移动平均线,问题是它没有消除噪音,而是进一步移动了曲线的位置。我想保持曲线下相同的位置和面积(这里是 100%)。拟合多个小曲线是这里的解决方案吗?或者是在 python 或 excel 中拟合曲线的方法?

python excel curve-fitting smoothing cdf
1个回答
0
投票

您有多种选择。例如,您可以使用 GaussianSavitzky-Golay 滤波器。

考虑噪声信号(一维 numpy 数组),如下所示:

以下代码片段允许您对其进行降噪。根据您的特定用例更改参数:

from scipy.ndimage import gaussian_filter1d
from scipy.signal import savgol_filter

np.random.seed(42)

x = np.linspace(0.0, 100.0, 300)
y = f(x) # your signal

y_gaussian = gaussian_filter1d(y, 3)
y_savgol = savgol_filter(y, 8, 2)

plt.plot(x, y, label="Noisy Signal")
plt.plot(x, y_gaussian, label="Gaussian Filter")
plt.plot(x, y_savgol, label="Savgol Filter")
plt.legend()
plt.show()

并放大以查看更多细节:

© www.soinside.com 2019 - 2024. All rights reserved.