Confusion regarding plot of Linear convolution vs high speed convolution?

2 Ansichten (letzte 30 Tage)
I am reading proakis book,Digital signal processing using Matlab, 3rd edition I am performing example 5.23 but i am not getting same plot/results as book although i am using almost same code
First i am attaching my code and output and then i will attach snapshot of book containing code and output The issue with book code is that , i get error for "nu" variable and matlab says "NI" is undefined(i have underlined NI in book snapshot with red paint pencil) , so i used "NL" in my code and "NL"=N*L ,but i am not getting output as book
My code is as follow
clc;clear all;close all;
conv_time = zeros(1,150); fft_time = zeros(1,150);
%
for L = 1:150
tc = 0; tf=0;
N = 2*L-1; nu = ceil(log10(N*L)/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; subplot(1,1,1);
plot(n(25:150),conv_time(25:150),n(25:150),fft_time(25:150))
Above is plot generated by my code
below is snap of plot and code of book

Akzeptierte Antwort

Vinay Ingle
Vinay Ingle am 18 Jun. 2020
Hello,
There is a typo (given in the errata sheet). The correct line is
nu = ceil(log10(N)/log10(2));
But even with this correction, you will not get the correct plot in Figure 5.22. This is because that plot was obtained in MS-DOS operating system using MATLAB-386 (version 3.7g) which ran in a single user and single program environment. Furthermore, MATLAB since then made several internal changes to how it is run (for efficiency purposes) and now it uses FFTW library for FFT computations. All these changes make comparisons of timimg computations meaningless and irrelevent, especially if you use today's computers. Figures 5.21 and 5-22 are for educational purposes only. If you want to reproduce those figures, you will need a 33 MHz 486 computer running MATLAB 3.7g.
  2 Kommentare
ABTJ
ABTJ am 13 Jul. 2020
where i can find this errata sheet?
Vinay Ingle
Vinay Ingle am 14 Jul. 2020
This is not a MATLAB question. Please send such questions outside of this forum.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Karthik Malisetty
Karthik Malisetty am 18 Jun. 2020
Hi,
From my understanding, the line
nu = ceil(log10(NI)/log10(2));
from the book seems to be using NI as a constant, while in your code, you are using the product of N and L (loop variable).
So, this might be causing the difference in the output. Recheck your NI value from the book (or any other sources).

Produkte


Version

R2011b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by