我正在尝试插值并找到C中插值的最小值x(可能使用割线方法)

时间:2018-12-07 21:44:45

标签: c interpolation

我想创建自己的C函数以内插一些数据点并找到准确的最小值(总体项目是音频调谐,并且我正在使用运行良好的YIN算法)。我正在数字DSP K22F ARM芯片上实现此功能,因此我希望在主要功能推送至显示和#/ b指示器的同时,尽可能减少在中断内实现的浮点乘法。

我已经达到需要插值的程度,我已经实现了算法,找到了 integer 的最小值,现在需要进行插值。目前,我正尝试使用我的3点进行抛物线插补。 I have found one that works within a small margin of error大多数插值函数似乎只在两点之间完成。

secant method on this page似乎可以很好地适用于我的应用程序。但是,我不知道如何将3点与此2点方法结合起来。也许我会以错误的方式进行操作?

  • 有人可以帮助我实现插值的割线方法吗?

我发现一些示例代码可以得到与我的代码完全相同的答案。

示例代码:

betterTau = minTau + (fc - fa) / (2 * (2 * fb - fc - fa));

我的代码:

newpoint = b + ((fa - fb)*(c-b).^2 - (fc - fb)*(b-a)^2) / ...
    (2*((fa-fb)*(c-b)+(fc-fb)*(b-a)))

其中x点的值是a,b和c。每个点的值分别是fa,fb和fc

当前,我只是在MATLAB上进行仿真,然后再将其放到板上,这就是为什么语法不是C的原因。从数学上讲,我没有看到这两个等式如何等效。

  • 有人可以向我解释这两个功能如何等效吗?

谢谢。

0 个答案:

没有答案