Digital Signal Processing Reference
In-Depth Information
fprintf( '\n - dsplab4_1' )
fprintf( '\ncompute dft - length: ' )
ECPUT1 = zeros(1,length(M1));
for k=1:length(M1)
fprintf( ' %6g ' ,M1(k))
x = randn(1,M1(k));
% random signal in time domain
t1 = tic;
% challenge Matlab cpu clock
dft(x);
% dft in direct form
ECPUT1(k) = toc(t1);
% elapsed Matlab cpu time
end
% print on screen
fprintf( '\nelapsed cpu-time for dft in direct form' )
fprintf( '\n p : time in seconds : factor ' )
fprintf( '\n%3i %10.3f' ,log2(M1(1)),ECPUT1(1))
for k=2:length(M1)
fprintf( '\n%3i %10.3f %10.3f' ,log2(M1(k)),ECPUT1(k),...
ECPUT1(k)/ECPUT1(k-1))
end
%% dit2fft
M2 = [12 13 14 15 16 17 18 19 20];
% signal length 2^M for fft
M2 = 2.^M2;
fprintf( '\ncompute dit2fft - length: ' )
ECPUT2 = zeros(1,length(M1));
for k=1:length(M2)
fprintf( ' %6g ' ,M2(k))
x = randn(1,M2(k));
% random signal in time domain
t1 = tic;
% challenge Matlab cpu clock
dit2fft(x);
% dit2fft algorithm
ECPUT2(k) = toc(t1);
% elapsed Matlab cpu time
end
% print on screen
fprintf( '\nelapsed cpu-time for dit2ff' )
fprintf( '\n p : time in seconds : factor ' )
fprintf( '\n%3i %10.3f' ,log2(M2(1)),ECPUT2(1))
for k=2:length(M2)
fprintf( '\n%3i %10.3f %10.3f' ,log2(M2(k)),ECPUT2(k),...
ECPUT2(k)/ECPUT2(k-1))
end
fprintf( '\n' )
%% Graphics
P1 = log2(M1); P2 = log2(M2);
TIMEmin = min([ECPUT1 ECPUT2]);
tmin = 10^floor(log10(TIMEmin));
TIMEmax = max([ECPUT1 ECPUT2]);
tmax = 10^ceil(log10(TIMEmax));
FIG1 = figure( 'Name' , 'dsplab4_1 : Approximate elapsed cpu time for dft
algorithm' ,...
'NumberTitle' , 'off' , 'Units' , 'normal' , 'Position' ,[.4 .4 .5 .5]);
semilogy(P1, ECPUT1, '+' ,P2, ECPUT2, '*' ,P1, ECPUT1, ':' ,P2, ECPUT2, ':' ),
grid
axis([min(P1) max(P2) tmin tmax]);
xlabel( 'DFT length, log_2({\itN})' )
ylabel( 'elapsed cpu time in seconds' )
legend( 'dft' , 'dit2fft' )
Search WWH ::




Custom Search