Confusion regarding plot of Linear convolution vs high speed convolution?
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
ABTJ
am 18 Jun. 2020
Kommentiert: Vinay Ingle
am 14 Jul. 2020
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
0 Kommentare
Akzeptierte Antwort
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
Vinay Ingle
am 14 Jul. 2020
This is not a MATLAB question. Please send such questions outside of this forum.
Weitere Antworten (1)
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).
0 Kommentare
Siehe auch
Kategorien
Mehr zu Spectral Measurements finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!