我有一个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
。
答案 0 :(得分:4)
fftshift
有一个可选的第二个输入参数,用于选择沿哪个维度应用偏移。不幸的是,无法提供两个维度,因此fftshift(G,[1,2])
将不起作用。您必须打两次fftshift
:
G = fftshift(fftshift(G,1),2);
希望这比单页调用100次要快。