2014-01-06 19 views
1

我有一个程序可以建立直方图图表,并且我想添加一个钟形曲线来表示基于我从工程中获得的目标的理想曲线。如何在VB.net中制作钟形曲线

这里是一个快照,让你知道我的工作内容。 enter image description here

我格式化秒来表示为hh:mm:ss的。

在这个例子中:
箱:20
目标:672秒
分钟120秒
最大:1200秒

如何可以绘制为上述条件的理想曲线?

红色线最终会弯曲一次,我可以弄明白这一点。

+0

你需要知道什么样的分布期望(推测正态高斯?)然后适合使用标准算法。 –

+0

您是否在绘图中使用GDI +? – OneFineDay

+0

@DonA 负面,我使用System.Windows.Forms.DataVisualization。制图 –

回答

1

您如何在这里定义“理想曲线”?如果您想使用高斯钟形曲线,则需要使用非线性曲线拟合算法(Levenberg-Marquardt,Nelder-Mead-Simplex是流行的算法)为数据拟合形式为f(t)=a*Exp(-(t-b)^2/2c^2)+d的曲线。 虽然自己编写这些算法很有趣,但它们涉及很多数学。所以我会建议你找到合适的图书馆(LMA是我可以从头顶开始思考的)。 或者,您可以参考数值接收,其中包含许多代码示例。

你自己需要做的什么是寻找从您的数据配合合适的启动参数。在高斯曲线不是全部太硬的情况下(a是振幅,几乎是最高和最低y值之差,b是最大值的x偏移,c是曲线宽度的度量并且如果其他参数正确初始化,可以相对自由地选择,d是数据的y-基线,例如您的数据的最低值)。

有了健康,你再拿到参数的-d为最适合您的数据的钟形曲线上述配方食品中。使用这些参数计算直方图间隔(50左右)中的一组y点,并将它们绘制在红线系列中。

作为这样的配合结果是什么样子我使用非线性拟合在起源上虚构的数据制成一个例子。注意曲线4个参数的结果(这里命名略有不同)。

Gaussian fitted data

+0

如果实际上,OP需要高斯密度,则不需要付出太多麻烦。 OP可以计算样本均值和标准偏差,并用它来绘制高斯凹凸。 –

1

通过“理想”曲线,我会认为你说的是​​高斯密度。如果这不是你的意思,你必须更新问题陈述清楚地说明你的意思。考虑到这一点,只要找到数据的均值和标准差(最好在分箱之前,虽然以后是好的;我怀疑它是否有很大的不同),并绘制高斯密度(p(x)= exp( - ( 1/2)*((x-mu)/ sigma)^ 2)/(sigma * sqrt(2 pi)))其中mu =平均值和σ=标准偏差。我假设你可以列出任何给定公式的点并绘制它们。

+0

容易,那么?谢谢。我会继续尝试。 –