File:Overlap-add algorithm.svg
Original file (SVG file, nominally 855 × 619 pixels, file size: 140 KB)
Captions
Summary
[edit]DescriptionOverlap-add algorithm.svg |
English: A sequence of 5 plots depicts one cycle of the Overlap-add convolution algorithm. The first plot is a long sequence of data to be processed with a lowpass FIR filter. The 2nd plot is one segment of the data to be processed in piecewise fashion. The 3rd plot is the filtered segment, including the filter rise and fall transients. The 4th plot indicates where the new data will be added with the result of previous segments. The 5th plot is the updated output stream. |
|||
Date | ||||
Source | Own work | |||
Author | Bob K | |||
Permission (Reusing this file) |
I, the copyright holder of this work, hereby publish it under the following license:
|
|||
Other versions |
This file was derived from: Overlap-save algorithm.svg |
|||
SVG development InfoField | This W3C-invalid vector image was created with LibreOffice. |
|||
Gnu Octave source InfoField | click to expand
This graphic was created with the help of the following Octave script: % Options
frame_background_gray = true;
if frame_background_gray
graphics_toolkit("qt") % or graphics_toolkit("fltk")
frame_background = .94*[1 1 1];
d = 2; % amount to add to text sizes
else
graphics_toolkit("gnuplot") % background will be white regardless of value below
frame_background = .94*[1 1 1];
d=0;
endif
M = 16; % filter length
h = ones(1,M)/M; % filter impulse response
L = 100; % output segment length
La = 500; % input data length
%randn("seed","reset") % experiment with data generator
%seed = randn("seed") % print value, in case want to use it again
randn("seed", e) % generate same data as Overlap-save_algorithm.svg
a = 1 + randn(1,La)/3; % data to be filtered
seg = 2; % segment to be computed
N = L + M-1; % DFT size (a power-of-2 would be more efficient)
Xa = seg*L + (1:L); % indices of segment to be filtered
% (https://octave.org/doc/v4.2.1/Graphics-Object-Properties.html#Graphics-Object-Properties)
% Speed things up when using Gnuplot
set(0, "DefaultAxesFontsize",10+d)
set(0, "DefaultTextFontsize",12+d)
set(0, "DefaultAxesYlim",[0 2])
set(0, "DefaultAxesYtick",[0:2])
set(0, "DefaultAxesYgrid","on")
set(0, "DefaultAxesXlim",[0 La])
set(0, "DefaultAxesXtick",[100:100:La])
set(0, "DefaultAxesXgrid","on")
set(0, "DefaultFigureColor",frame_background)
set(0, "DefaultAxesColor","white")
%=======================================================
hfig = figure("position",[10 10 912 685], "color",frame_background);
x1 = .02; % left margin
x2 = .02; % right margin
y1 = .08; % bottom margin for annotation
y2 = .08; % top margin for title
dy = .04; % vertical space between rows
width = 1-x1-x2;
height= (1-y1-y2-4*dy)/5; % space allocated for each of 5 rows
x_origin = x1;
y_origin = 1; % start at top of graph area
%=======================================================
y_origin = y_origin -y2 -height; % position of top row
subplot("position",[x_origin y_origin width height])
plot(1:La, a, "color","blue", Xa, a(Xa), "color","red", "linewidth",2)
title("One segment of an Overlap-add algorithm", "fontsize",14+d);
text(1, 2.2, "X[n], with segment k=2 in red", "fontsize",10+d)
%=======================================================
y_origin = y_origin -dy -height;
subplot("position",[x_origin y_origin width height])
plot(1:L, a(Xa), "color","red",...
L+(1:M-1),zeros(1,M-1), "color","red", "linewidth",2)
text(250, 1.6, 'X_k[n]')
%=======================================================
y_origin = y_origin -dy -height;
subplot("position",[x_origin y_origin width height])
H = fft(h,N);
b = real(ifft(H .* fft(a(Xa),N))); % = conv(h,a(Xa))
plot(1:N, b, "color","red", "linewidth",2);
text(250, 1.6, 'Y_k[n], output of FIR lowpass filter');
%=======================================================
y_origin = y_origin -dy -height;
subplot("position",[x_origin y_origin width height])
Xc = 1:seg*L;
c = conv(h,a(Xc));
x = (length(c)+1):La;
plot(1:length(c), c, "color","blue",...
x, zeros(1,length(x)), "color","blue", "linewidth",2,...
seg*L + (1:N), b, "color","red", "linewidth",2)
text(250, 1.6, 'Y_2[n-2L]')
%=======================================================
y_origin = y_origin -dy -height;
subplot("position",[x_origin y_origin width height])
Xd = 1:(seg+1)*L;
d1 = conv(h,a(Xd));
x = (length(d1)+1):La;
plot(1:length(d1), d1, "color","blue",...
x, zeros(1,length(x)), "color","blue", "linewidth",2)
xlabel('\leftarrow n \rightarrow', "fontsize",12+d)
|
File history
Click on a date/time to view the file as it appeared at that time.
Date/Time | Thumbnail | Dimensions | User | Comment | |
---|---|---|---|---|---|
current | 13:57, 25 January 2020 | 855 × 619 (140 KB) | Bob K (talk | contribs) | replace version with spurious arrow at the top | |
01:11, 25 January 2020 | 855 × 619 (136 KB) | Bob K (talk | contribs) | Reverted to version as of 20:09, 24 January 2020 (UTC) | ||
22:31, 24 January 2020 | 855 × 619 (136 KB) | Bob K (talk | contribs) | slightly darker shade of gray, because previous shade is ignored (i.e. replaced by white) | ||
20:09, 24 January 2020 | 855 × 619 (136 KB) | Bob K (talk | contribs) | change frame background from white to gray | ||
14:31, 19 January 2020 | 855 × 630 (111 KB) | Bob K (talk | contribs) | change seed value to "e" | ||
22:01, 18 January 2020 | 855 × 630 (110 KB) | Bob K (talk | contribs) | use same waveform as File:Overlap-save method.svg | ||
22:34, 14 January 2020 | 855 × 630 (102 KB) | Bob K (talk | contribs) | User created page with UploadWizard |
You cannot overwrite this file.
File usage on Commons
There are no pages that use this file.
File usage on other wikis
The following other wikis use this file:
- Usage on en.wikipedia.org
Metadata
This file contains additional information such as Exif metadata which may have been added by the digital camera, scanner, or software program used to create or digitize it. If the file has been modified from its original state, some details such as the timestamp may not fully reflect those of the original file. The timestamp is only as accurate as the clock in the camera, and it may be completely wrong.
Width | 241.3mm |
---|---|
Height | 174.75mm |