为什么二维傅立叶变换 (Matlab) 中的列需要一个临时值

Why do I need a temporary value for the columns in the 2D Fourier Transform (Matlab)

这是二维离散傅里叶变换的 matlab 代码。此代码转录自:

Scilab 数字图像处理教科书伴侣 作者:S. Jayaraman、S. Esakkirajan 和 T. Veerakumar

我不太确定在第二个 for 循环中发生了什么,以及为什么我们必须为 f_2 使用临时值。

脚本的这个阶段发生了什么?

谢谢。

function [ftransformed2d]= dft2d(f)    

[rows,cols]=size(f); 

for k=1:cols 

    f_1(:,k)=exp(-2*1j*pi*(0:nROWs-1)'*(0:rows-1)/rows)*f(:,k);
end


for J=1:rows 
    f_2_a=exp(-2*1j*pi*(0:nCOLs-1)'*(0:nCOLs-1)/cols)*(f_1(J,:)).';
    f_2(J,:)=f_2_a.';   
end

ftransformed2d = circshift(f_2,floor(size(f_2)/2));
end

第一个循环对每一列执行 FFT,第二个循环对每一行执行 FFT。关于第二个循环,

 f_2_a=exp(-2*1j*pi*(0:cols-1)'*(0:cols-1)/cols)*(f_1(J,:)).';
 f_2(J,:)=f_2_a.';  

f_2_a 的使用当然不是必需的,但可能为了便于阅读而包含在内。它可以写成

 f_2(J,:) = ( exp(-2*1j*pi*(0:cols-1)'*(0:cols-1)/cols)*(f_1(J,:)).' ).';