【发布时间】:2017-02-28 00:51:06
【问题描述】:
我正在尝试评估从三次样条获得的大型分段多项式中的点。这需要很长时间才能完成,我想加快速度。
因此,我想使用并行过程而不是顺序评估分段多项式上的点。
代码:
z = zeros(1e6, 1) ; % preallocate some memory for speed
Y = rand(11220,161) ; %some data, rand for generating a working example
X = 0 : 0.0125 : 2 ; % vector of data sites
pp = spline(X, Y) ; % get the piecewise polynomial form of the cubic spline.
生成的结构很大。
for t = 1 : 1e6 % big number
hcurrent = ppval(pp,t); %evaluate the piecewise polynomial at t
z(t) = sum(x(t:t+M-1).*hcurrent,1) ; % do some operation of the interpolated value. Most likely not relevant to this question.
end
不幸的是,使用矩阵形式并使用:
hcurrent = flipud(ppval(pp, 1: 1e6 ))
需要太多内存来处理,所以无法完成。有没有办法可以批量处理此代码以加快速度?
【问题讨论】:
-
您可以先预分配
y。为MVCE 提供可运行的代码会很有帮助,这样我们就可以确定我们正在处理同样的问题。big_number有多大?M是什么,x和X一样吗? -
谢谢,我已经进一步澄清了。
标签: multithreading matlab parallel-processing vectorization spline