如何从其他程序访问MATLAB(插值)样条曲线?

时间:2011-05-13 20:42:13

标签: matlab performance data-access

如果我要从大量数据(大约400个图表,每个500,000个值)创建插值样条线,那么我怎样才能快速有效地从另一个软件访问这些样条曲线的坐标?

最初我打算对数据进行回归并在我的delphi程序中使用结果公式,但结果却比我想象的更大。

我目前正在使用Matlab,但如果需要,我可以使用其他软件。

编辑:这些数据可能与某些其他数据的empirical cumulative distribution相关(我已在数据库中拥有这些数据)。

以下是其中一个图表的样子。example

重点是访问速度。我打算使用这些数据来运行财务数据的模拟。

4 个答案:

答案 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。