%
% algoritmo FFT 2D
%

clear i;  % cosi' siamo sicuri che viene interpretata come unita' immaginaria; potevano anche fare "i = sqrt(-1)"

% sequenza sinusoidale bi-dimensionale
Nx = 32;
Ny = 32;
omega_nu_x = (2*pi/Nx) * 0.3*(Nx/2);
omega_nu_y = (2*pi/Ny) * 0.1*(Ny/2);
xi = cos(omega_nu_x*(0:Nx-1))' * cos(omega_nu_y*(0:Ny-1));
%figure(1); mesh(1:Nx,1:Ny,xi); rotate3d; pause,
figure(2); surf(1:Nx,1:Ny,xi); rotate3d; pause,
           view(2), pause


%
% calcolo della FFT 2D
%
x = xi;
for ix=1:Nx
  x(ix,:) = algo_fft_1D( x(ix,:) );
end;
for iy=1:Ny
  x(:,iy) = algo_fft_1D( x(:,iy) );
end;
disp(['verifica: ' num2str(sum(sum(abs(real(x - fft2(xi))))) + sum(sum(abs(imag(x - fft2(xi))))))]);

% grafica "mesh" e 2D a livelli di colore

%figure(3); mesh(1:Nx,1:Ny,abs(fft2(xi))); rotate3d; pause,

figure(4); surf(1:Nx,1:Ny,abs(x)); view(2);
