GPU 上的 3D 矩阵上的 fftshift
fftshift on a 3D matrix on GPU
我有一个 3D 矩阵 512*512*100
。我想使用 GPU 在它的每一页上应用 fftshift
。我现在正在做的是:
G = rand(512,512,100, 'gpuArray');
for i=1:100
G(:,:,i) = fftshift(G(:,:,i));
end
有没有更快的方法来应用 fftshift
而无需循环执行?例如,fft2
可以直接应用于 3D 数组,分别在每个页面上执行操作。但是,fftshift
不是那样工作的。此外,fftshift
不受 pageFun
支持。
fftshift
有一个可选的第二个输入参数,用于选择沿哪个维度应用偏移。不幸的是,无法提供二维,因此 fftshift(G,[1,2])
将不起作用。您必须调用 fftshift
两次:
G = fftshift(fftshift(G,1),2);
希望这比为单个页面调用 100 次要快。
我有一个 3D 矩阵 512*512*100
。我想使用 GPU 在它的每一页上应用 fftshift
。我现在正在做的是:
G = rand(512,512,100, 'gpuArray');
for i=1:100
G(:,:,i) = fftshift(G(:,:,i));
end
有没有更快的方法来应用 fftshift
而无需循环执行?例如,fft2
可以直接应用于 3D 数组,分别在每个页面上执行操作。但是,fftshift
不是那样工作的。此外,fftshift
不受 pageFun
支持。
fftshift
有一个可选的第二个输入参数,用于选择沿哪个维度应用偏移。不幸的是,无法提供二维,因此 fftshift(G,[1,2])
将不起作用。您必须调用 fftshift
两次:
G = fftshift(fftshift(G,1),2);
希望这比为单个页面调用 100 次要快。