寻找使用离散值计算高斯曲线最大值的C/C++库

Val*_*itz 1 c c++ gaussian discrete-mathematics curve-fitting

我有一些离散值和假设,这些值位于高斯曲线上.应该使用仅使用3个离散值的最大计算算法.你知道实现这个计算的C/C++中的库或代码吗?

谢谢!

PS:原始任务是自动对焦实现.我移动(显微镜)相机并在不同位置捕捉图片.具有最不同颜色的位置应该具有最佳焦点.

编辑 这是很久以前:-(我只是想删除这个问题,但让它尊重好的答案.

Mat*_*lia 10

你有三个应该在高斯曲线上的点; 这意味着他们躺在功能上:

通用高斯函数

如果你取这个函数的对数,你会得到:

高斯函数的对数

这只是一个简单的二阶多项式,即一个垂直轴为simautry的抛物线:

通用二阶多项式

系数定义

因此,如果您知道抛物线的三个系数,则可以导出高斯曲线的参数; 顺便说一句,高斯函数的唯一一个你感兴趣的参数是b,因为它告诉你分布的中心在哪里,即它的最大值.立即发现这一点

b来自beta和alpha

剩下要做的就是拟合抛物线(用"原始"x和你的值的对数).现在,如果你有更多的点,那么就会涉及多项式拟合,但是,由于你只有三个点,情况非常简单:只有一个抛物线通过三个点.

您现在只需为每个点编写抛物线方程并求解系统:

系统的三点

(与 y和z,其中z s是在相应的x)处读取的实际值

这可以通过手工解决(有一段时间),一些CAS或...... 查看StackOverflow :); 解决方案是:

通过三点解决抛物线问题

因此,使用这些最后的方程式(记住:y s是"真实"值的对数)和其他关系,您可以轻松编写一个简单的代数公式来获得高斯曲线的参数b,即其最大值.

最后结果

(我可能在计算中做了一些混乱,在使用结果之前仔细检查它们,无论如何程序应该是正确的)

(感谢http://www.codecogs.com/latex/eqneditor.php获取LaTeX方程式)