如果我要从大量数据(大约400个图表,每个500,000个值)创建插值样条线,那么我怎样才能快速有效地从另一个软件访问这些样条曲线的坐标?
最初我打算对数据进行回归并在我的delphi程序中使用结果公式,但结果却比我想象的更大。
我目前正在使用Matlab,但如果需要,我可以使用其他软件。
编辑:这些数据可能与某些其他数据的empirical cumulative distribution
相关(我已在数据库中拥有这些数据)。
以下是其中一个图表的样子。
重点是访问速度。我打算使用这些数据来运行财务数据的模拟。
答案 0 :(得分:1)
如果你也熟悉C,你可以使用Matlab编码器或类似的东西来获得一个中间库,将你的Delphi程序和MATLAB连接在一起。连接Delphi和C代码虽然有点乏味,但肯定是可能的(或者它在Delphi 7时代就已经存在)。或者您甚至可以在MATLAB中编写算法,使用Matlab编码器将代码转换为C,并在Delphi中调用生成的C库。
也许有点矫枉过正,但您可以将数据存储在MATLAB的数据库(例如MySQL)中,并从Delphi中检索它们。
最后:Delphi是一个真正的约束吗?您也可以使用MATLAB进行模拟,因为您可能拥有与MATLAB相同的工具(甚至更多),而不是Delphi。之后你可以分享结果,我认为结果速度较慢。
答案 1 :(得分:1)
我有效地做这个的初步猜测是使用memmapfile
在MATLAB中创建一个内存映射文件,将一个包含数据的查找表填入其中,然后在Delphi代码中打开内存映射文件,从该文件中读取数据。
答案 2 :(得分:1)
MATLAB有一个命令,用于将样条曲线转换为分段多项式。然后,您可以使用unmkpp
提取每个多项式的中断和系数,并在另一个程序中对它们进行评估。
答案 3 :(得分:0)
最快的很可能是您保存到磁盘的查找表,以及您在模拟代码中加载和使用的查找表(尽管:为什么不在Matlab中运行模拟?)
您可以使用FNVAL评估样条曲线的精细粒度列表[{1}},并使用最接近的值x
来查找cdf。