% Call: tdft_5x5.m.m % Demo code for calculating the 5x5-point DFT by % the tensor transform: six 5-point DFTs are used % % Dr. Artyom M. Grigoryan, 11/12/1997 N=5; f=[ 1 2 1 3 1 2 4 1 1 2 1 3 2 2 1 4 2 1 1 3 2 4 1 2 1]; F2D=fft2(f); % illustration of the method for one generator: p=2; s=1; Image_signal=zeros(1,N); Image_signal=ft_pst(f,p,s); % 7 14 6 12 9 TDFFT_signal=fft(Image_signal); % 48,-0.4549-1.2286i,-6.0451-8.6453i,-6.0451+8.6453i,-0.4549+1.2286i T_ps=cyclic_group(p,s,N); % 0 0 % 2 1 % 4 2 % 1 3 % 3 4 FT=zeros(N); for k=1:N p1=T_ps(k,1)+1; s1=T_ps(k,2)+1; FT(s1,p1)=TDFFT_signal(k); end; % The whole 2-D DFT by the tensor transform FT=zeros(N); s=1; for p=0:N-1 Image_signal=zeros(1,N); Image_signal=ft_pst(f,p,s); TDFFT_signal=fft(Image_signal); T_ps=cyclic_group(p,s,N)+1; for k=1:N p1=T_ps(k,1); s1=T_ps(k,2); FT(s1,p1)=TDFFT_signal(k); end; end; p=1; s=0; Image_signal=zeros(1,N); Image_signal=ft_pst(f,p,s); TDFFT_signal=fft(Image_signal); T_ps=cyclic_group(p,s,N)+1; for k=1:N p1=T_ps(k,1); s1=T_ps(k,2); FT(s1,p1)=TDFFT_signal(k); end; % 48.0000 4.9721 - 4.8940i -3.9721 - 6.9677i -3.9721 + 6.9677i 4.9721 + 4.8940i % -2.0000 + 1.1756i -3.9721 + 1.5388i -0.4549 - 1.2286i -1.3090 + 5.2043i -1.3090 + 2.1266i % -2.0000 - 1.9021i -0.1910 - 2.0409i 4.9721 - 0.3633i -0.1910 - 1.3143i -6.0451 - 8.6453i % -2.0000 + 1.9021i -6.0451 + 8.6453i -0.1910 + 1.3143i 4.9721 + 0.3633i -0.1910 + 2.0409i % -2.0000 - 1.1756i -1.3090 - 2.1266i -1.3090 - 5.2043i -0.4549 + 1.2286i -3.9721 - 1.5388i % to check if the 2-D DFT has been calculated correctly: Inv_image=real(ifft2(FT)); % Inv_image=correct_image(Inv_image); % Inv_image=Inv_image.*(Inv_image>=0); Inv_image=round(Inv_image); fprintf(' %3d %3d %3d %3d %3d \n',Inv_image');