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'
)