为什么scatteredInterpolant比TriScatteredInterp慢?

15的观点(30天)
阿迪•
阿迪• 2013年9月25日
评论道: 马特·J 2013年9月27日
我已经写了代码,使用 TriScatteredInterp ,但我读在Matlab的文档,这将不支持在未来的版本中,我应该使用金宝app scatteredInterpolant 。所以我做了,发现是两次慢512×512矩阵。唯一的区别在我的代码是使用:
F = scatteredInterpolant(双(x '),双(y),双(z),“天然”);
而不是
F = TriScatteredInterp(双(x '),双(y),双(z),“天然”);
这是为什么,我能做些什么来让它更快呢?
3评论
马特·J
马特·J 2013年9月27日
编辑:马特·J 2013年9月27日
即使建设时间很重要,我不能繁殖缓慢的行为。我甚至看到稍快的行为在scatteredInterpolant 512 ^ 2的数据,
x =兰德(512)* 4 - 2;
y =兰德(512)* 4 - 2;
z = x。* exp (- x ^ 2 y ^ 2);
抽搐;
其中obj1 = TriScatteredInterp (x (:), y (,)、z (:));
toc
%运行时间是1.475620秒。
抽搐
methoda = scatteredInterpolant (x (:), y (,)、z (:));
toc
%运行时间是1.303282秒。

登录置评。

答案(1)

马特·J
马特·J 2013年9月26日
编辑:马特·J 2013年9月26日
你不应该关心时间构造f .这只是一次性设置计算。你应该关心实际的速度插值操作,大概你会做反复和更多的点。
在我的测试中,我发现scatteredInterpolant有点慢,但肯定不是2倍,随数据大小的区别。可能有鲁棒性改进,解释的插值速度较慢,新版本(例如更好的错误检查,…)
x =兰德(100 1)* 4 - 2;
y =兰德(100 1)* 4 - 2;
z = x。* exp (- x ^ 2 y ^ 2);
其中obj1 = TriScatteredInterp (x, y, z);
methoda = scatteredInterpolant (x, y, z);
ti = linspace (2, 2, 2 e3);
[qx, qy] = meshgrid(钛、钛);
抽搐;
qz1 =其中obj1 (qx、qy);
toc;
%运行时间是4.324792秒。
抽搐;
qz2 = methoda (qx、qy);
toc
%运行时间是4.990118秒。

下载188bet金宝搏

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!