首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >C#中的高斯拟合

C#中的高斯拟合
EN

Stack Overflow用户
提问于 2011-10-12 14:40:43
回答 5查看 8.2K关注 0票数 5

在我正在做的一个项目中,我需要从一组点中获得高斯拟合-需要一些处理的均值和方差,以及可能的误差度(或精度水平),以便我计算出这组点是否真的具有正态分布。

我找到了这个question

但它仅限于3个点-而我需要一个可以与任何数量的点工作的拟合。

我需要的是类似于labview的Gaussian Peak Fit

我看过mathdotnet和aforge.net (在同一个项目中使用两者),但是我没有发现任何东西。

有人知道C#或(易于转换的) C/C++或Java解决方案吗?

或者,我被告知应该使用迭代算法--我可以自己实现它(如果不是太复杂的数学运算)。你知道我能用什么吗?我读了很多文章(关于维基百科和通过谷歌找到的其他文章),但我没有找到任何明确的解决方案。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-10-18 18:03:59

我在一个公共领域的图像处理程序ImageJ中找到了一个很好的实现,它的源代码是可用的here

转换为C#并适应我的需求。

感谢你们的回答..。与我找到的解决方案没有严格的关系,但不知何故,在您的帮助下我做到了:)

票数 1
EN

Stack Overflow用户

发布于 2011-10-12 15:22:46

只需计算样本的平均值和标准差,这是高斯分布的唯一两个参数。

对于“拟合优度”,你可以做一些事情,比如CDF的均方误差。

票数 2
EN

Stack Overflow用户

发布于 2019-07-23 21:25:52

Math.Net (nuget)中,您可以执行以下操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 = μ
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7741863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文