我试图提高在大型数据集上运行的代码的速度.我需要执行该功能out = sinc(x),其中x是2048 -by- 37499双打矩阵.这是非常昂贵的,并且是我的程序的瓶颈(即使在GPU上计算).
我正在寻找任何可以提高此操作速度的解决方案.我希望这可以通过预先计算矢量来实现,LookUp = sinc(y)其中矢量y是矢量y = min(min(x)):dy:max(max(x)),即跨越整个预期x元素范围的矢量.
如何有效地sinc(x)从该LookUp向量生成近似值?
我需要避免生成三维数组,因为这会消耗比我可用的内存更多的内存.
以下是interp1解决方案的测试:
a = -15;
b = 15;
rands = (b-a).*rand(1024,37499) + a;
sincx = -15:0.000005:15;
sincy = sinc(sincx);
tic
res1 = interp1(sincx,sincy,rands);
toc
tic
res2 = sinc(rands);
toc'
sincx = gpuArray(sincx);
sincy = gpuArray(sincy);
r = gpuArray(rands);
tic
r = interp1(sincx,sincy,r);
toc
r = gpuArray(rands);
tic
r = sinc(r);
toc …Run Code Online (Sandbox Code Playgroud) 计算3D阵列的每个"切片"的最大值及其相应的索引的最快方法是什么?