一组双打的Akima插值

时间:2010-08-17 13:16:52

标签: c# interpolation spline

假设我有一个双打数组,使用Akima interpolation对这个系列进行采样的好算法是什么?将这个数学描述翻译成代码我太愚蠢了。

// values is an array of doubles
// idx is the index of the left-hand value for the current interpolation
// t is the normalized parameter between values[idx] and values[idx+1]
// Don't worry about array bounds, I'll handle that separately.
public double InterpolateAkima(double[] values, int idx, double t)
{
  ...?
}

2 个答案:

答案 0 :(得分:27)

重新发布并扩展我对another SO question的回复,该回复已作为此问题的副本而关闭 - 正如对该问题的评论所暗示的那样。

Akima的原始论文: ``一种新的插值方法和基于局部程序的平滑曲线拟合'',期刊ACM 17,14(1970),589-602

http://www.leg.ufpr.br/lib/exe/fetch.php/wiki:internas:biblioteca:akima.pdf

C实施

https://github.com/ampl/gsl/blob/master/interpolation/akima.c

C#实施

https://gist.github.com/dreikanter/3526685

Delphi实现(参见delphi / src / spline3.pas中的BuildAkimaSpline过程)

http://www.alglib.net/translator/re/alglib-2.6.0.delphi.zip

Akima的Fortran 66实施

http://cran.r-project.org/web/packages/akima/

Fortran 90实施

http://miyoshi.googlecode.com/svn-history/r72/trunk/common/common.f90

Java实现

https://commons.apache.org/proper/commons-math/jacoco/org.apache.commons.math3.analysis.interpolation/AkimaSplineInterpolator.java.html

Lisp实现"用于AutoCAD 2d-Polylines"

http://autocad.xarch.at/code/candido/akima.lsp

Matlab实现

http://www.mathworks.se/matlabcentral/fileexchange/1814-akima-interpolation

Pascal实施(program description

http://jean-pierre.moreau.pagesperso-orange.fr/Pascal/akima_pas.txt

Python实现

http://www.lfd.uci.edu/~gohlke/code/akima.py.html

VB6实现(参见vb6 / src / spline3.bas中的子程序BuildAkimaSpline)

http://www.alglib.net/translator/re/alglib-2.6.0.vb6.zip

http://www.koders.com/cpp/fid1393B9D668316C1700966643DE0609660B9CB13A.aspx?s=%22Brian+Smith%22

答案 1 :(得分:7)

在谷歌代码搜索上获得了一些hits,但这不是我所了解的领域。第一个结果是Math.NET可能有一些兴趣。