《DSP using MATLAB》示例Example5.23

代码:

conv_time = zeros(1,150); fft_time = zeros(1, 150);
%
% Nmax = 2048; 
for L = 1:150
	tc = 0; tf = 0;
	N = 2*L-1; nu = ceil(log10(N)/log10(2)); N = 2^nu;
	for I = 1:100
		h = randn(1,L); x = rand(1,L);
		t0 = clock; y1 = conv(h,x); t1 = etime(clock,t0); tc = tc + t1;
		t0 = clock; y2 = ifft(fft(h,N) .* fft(x,N)); t2 = etime(clock,t0);
		tf = tf + t2;
	end
	%
	conv_time(L)=tc/100; fft_time(L)=tf/100;
end

n=1:150;  

figure('NumberTitle', 'off', 'Name', 'Exameple5.23 ')
set(gcf,'Color','white'); 
plot(n(25:150), conv_time(25:150), n(25:150), fft_time(25:150));
xlabel('sequence length N'); ylabel('Time in Sec.'); title('comparison of convolution times');

  运行结果:

我的机子结果如下图:

书中的例子,运行结果如下图:

 

posted @ 2016-12-21 07:21  跑啊跑  阅读(267)  评论(0编辑  收藏  举报