在我正在做的一个项目中,我需要从一组点中获得高斯拟合-需要一些处理的均值和方差,以及可能的误差度(或精度水平),以便我计算出这组点是否真的具有正态分布。
我找到了这个question
但它仅限于3个点-而我需要一个可以与任何数量的点工作的拟合。
我需要的是类似于labview的Gaussian Peak Fit
我看过mathdotnet和aforge.net (在同一个项目中使用两者),但是我没有发现任何东西。
有人知道C#或(易于转换的) C/C++或Java解决方案吗?
或者,我被告知应该使用迭代算法--我可以自己实现它(如果不是太复杂的数学运算)。你知道我能用什么吗?我读了很多文章(关于维基百科和通过谷歌找到的其他文章),但我没有找到任何明确的解决方案。
发布于 2011-10-18 18:03:59
我在一个公共领域的图像处理程序ImageJ中找到了一个很好的实现,它的源代码是可用的here
转换为C#并适应我的需求。
感谢你们的回答..。与我找到的解决方案没有严格的关系,但不知何故,在您的帮助下我做到了:)
发布于 2011-10-12 15:22:46
只需计算样本的平均值和标准差,这是高斯分布的唯一两个参数。
对于“拟合优度”,你可以做一些事情,比如CDF的均方误差。
发布于 2019-07-23 21:25:52
var real_σ = 0.5;
var real_μ = 0;
//Define gaussian function
var gaussian = new Func<double, double, double, double>((σ, μ, x) =>
{
return Normal.PDF(μ, σ, x);
});
//Generate sample gaussian data
var data = Enumerable.Range(0, 41)
.Select(x => -2 + x * 0.1)
.Select(x => new { x, y = gaussian(real_σ, real_μ, x) });
var xs = data.Select(d => d.x).ToArray();
var ys = data.Select(d => d.y).ToArray();
var initialGuess_σ = 1;
var initialGuess_μ = 0;
var fit = Fit.Curve(xs, ys, gaussian, initialGuess_σ, initialGuess_μ);
//fit.Item1 = σ, fit.Item2 = μ
https://stackoverflow.com/questions/7741863
复制相似问题