function [fr, fx] = do_fourier(func,xrange,frange,style) % DO_FOURIER plots function and its transform. % if nargin<4 style = 'phase'; end if (nargin<3) frange = 2; end if (nargin<2) xrange = 2; end D=32; N=D^2; k=-N/2:N/2-1; x = (D/N)*k; dx = x(2)-x(1); f = func(x); idx=find(abs(x)<xrange); subplot(2,1,1); genplot(x(idx),f(idx),'x','f(x)',style); ft = fftshift(fft(fftshift(f)))*dx; fx = (1/D)*k; fr = real(ft); fi = imag(ft); %fprintf('maximum real value %g\n',max(abs(fr))); %fprintf('maximum imag value %g\n',max(abs(fi))); idx = find(abs(fx)<frange); subplot(2,1,2); genplot(fx(idx),ft(idx),'\xi','F(\xi)',style);