C#。如何将高斯钟形曲线应用于我的峰值?

标签 c# curve-fitting gaussian

我在理解如何将高斯曲线拟合到我的峰值时遇到了极大的困难。有一些类似的问题,但即使在看了这些之后我仍然不确定。统计/概率论等从来都不是我的强项,但我认为令我困惑的是高斯钟形曲线是简单地使用平均值和标准差来计算的。与其他曲线拟合方法不同,不使用峰值中的实际原始值。

我已经实现了高斯函数;

public static float getGaussian(float x,  float mean, float stdDev)
{
            float v1 = 1F / (stdDev * (float)Math.Sqrt(2 * Math.PI));
            float v2 = ((x - mean) * (x - mean)) / (2 * (stdDev * stdDev));
            return (v1 * (float)Math.Exp(-v2));
}

我认为这是正确的,但我的“曲线”最终看起来像一个平坦的平原,所以我显然做错了什么。

这是一个示例峰值 enter image description here

原始数据,即 (x,y) 点是

(9,0) (10,1) (11,2) (12,3) (13,4) (14,10) (15,12) (16,13) (17,23) (18,26) (19,23) (20,20) (21,17) (22,12) (23,5) (24,3) (25,3) (26,4) (27,2) (28,2) (29,1)

谁能解释一下如何根据这些数据计算高斯曲线以及曲线是什么样子?

最佳答案

看来你只有整数。假设这是来自正态分布数据的直方图,您将拥有:

xs = sum_i x_i * y_i
ns = sum_i y_i
mean = xs / ns

ss = sum_i  y_i * ( x_i - mean) * ( x_i - mean)
sigma = sqrt( ss / ( ns - 1 ) )

最后,如果 g( x, x0, s ) 是均值 x0 和标准差 s 的归一化高斯,则

ns * g( x, mean, sigma )

应该近似您的数据。

关于C#。如何将高斯钟形曲线应用于我的峰值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64156209/

相关文章:

C# 列表框集合语法

python - 从噪声数据中插入连续曲线

c++ - 高斯约尔消元法

opencv - 带面膜的 float 平滑垫

image-processing - 如何在 3D 中进行高斯滤波

c# - 为 C# 初始化 geckoWebBrowser 异常

c# - Visual Studio 中的私有(private)对象

c# - 我如何获得 DotNetNuke 中的所有公共(public)页面?

python - 在 matplotlib 中使用 Debye+Einstein 模型进行比热拟合

python - 如何绘制系数错误的函数?