如何在节省时间的同时在给定的函数上插入一个点?

1次查看(最近30天)
雷纳托Quartullo
雷纳托Quartullo 2021年3月19日
编辑: 1月 2021年3月22日
你好,
我有一个函数 有N个点的集合 ,即 关于函数f,我想在一个点上计算函数的值 的设置 X ,所以 .到目前为止,我使用的是Matlab函数 = interp1 ( ,“样条”)。但也许这种方法需要一定的计算工作量。由于我总是在单个点(不是点的向量)上计算我的函数,是否有替代函数(或方法)interp1来完成这个任务,允许节省时间?
提前谢谢你!
4评论
图像分析
图像分析 2021年3月20日
一切都需要计算。请说明 需要多长时间 , 你需要多快 .你可以用tic和toc来计时。

登录评论。

接受的答案

1月
1月 2021年3月22日
在没有开销的情况下,速度快了3倍,如果你和邻居乱搞:
X = 360:0.5:359.5;
Y =兰德(大小(X));
ξ= 7.59;
抽搐
k = 1:1e4
Y = interp1(X, Y, xi,样条的);
结束
toc
抽搐
index = find(xi >= X,“最后一次”);
XX = X (index-8:指数+ 8);
k = 1:1e4
F = griddedInterpolant(XX, Y(index-8:index+8)),样条的);
移= F (xi);
结束
toc
yi1——移当然有一个区别:RAND是非常嘈杂的输入数据
%运行时间为1.554598秒。
%运行时间为0.513496秒。

答案(1)

沃尔特·罗伯森
沃尔特·罗伯森 2021年3月19日
对X进行排序,已知增量,对于任意X *,可以直接计算不超过X *的对应X bin,如xstar*2+721。称之为idx
jdxstart = min(max(1,idx-2), length(X) - 4);
jdx = jdxstart: jdxstart + 4;
样条(X(jdx), y(idx))
Ystar = ppval(pp, xstar);
也就是说,我们提取X y“近”X星和样条只在那里,以减少工作。
6个评论

登录评论。

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!