将函数应用于Matlab中的每个子矩阵

时间:2014-10-06 04:26:55

标签: matlab

我希望更快地制作以下代码:

A = DxNxNxN matrix
for i=1:D
   A(i,:,:,:) = ifftn(A(i,:,:,:));
end

我一直在研究arrayfun函数。我想这应该可以转换为单元格,但我宁愿避免这样做以提高性能(也无法使其工作)。

1 个答案:

答案 0 :(得分:0)

您可以沿着三个维度链接ifft

A = ifft(ifft(ifft(A,[],2),[],3),[],4);

这是否更快可能取决于DN

另一种可能性是

A = fft(ifftn(A),[],1);

虽然这可能是浪费,因为第一个维度会被转换回来然后再转发。