gpt4 book ai didi

matlab - 如何有效地用查找替换函数?

转载 作者:太空宇宙 更新时间:2023-11-03 19:32:37 25 4
gpt4 key购买 nike

我正在尝试提高在大型数据集上运行的代码的速度。我需要执行函数 out = sinc(x),其中 x2048-by-37499 double 矩阵。这非常昂贵并且是我的程序的瓶颈(即使在 GPU 上计算)。

我正在寻找任何可以提高此操作速度的解决方案。我希望这可以通过预先计算向量 LookUp = sinc(y) 来实现,其中 y 是向量 y = min(min(x)) :dy:max(max(x)),即跨越预期 x 元素整个范围的向量。

如何从这个 LookUp 向量高效地生成 sinc(x) 的近似值?

我需要避免生成三维数组,因为这会消耗比可用内存更多的内存。

这是对 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

Elapsed time is 0.426091 seconds.
Elapsed time is 0.472551 seconds.
Elapsed time is 0.004311 seconds.
Elapsed time is 0.130904 seconds.

分别对应CPU interp1、CPU sinc、GPU interp1、GPU sinc

最佳答案

不确定我是否完全理解您的问题。但是一旦有了 LookUp = sinc(y),您就可以使用 Matlab 函数 interp1

out = interp1(y,LookUp,x)

其中x可以是任意大小的矩阵

关于matlab - 如何有效地用查找替换函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33524052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com