Датотека:Comparison of symmetric and periodic Gaussian windows.svg

Садржај странице није подржан на другим језицима
Ово је датотека са Викимедијине оставе
С Википедије, слободне енциклопедије

Оригинална датотека(SVG датотека, номинално 652 × 743 пиксела, величина: 108 kB)

Опис измене

Опис
English: These figures compare two 8-length Gauss window functions and their spectral leakage (discrete-time Fourier transform) characteristics. The function labeled DFT-even is a truncated version of a 9-length symmetric window, whose DTFT is also shown (in green). All three DTFTs have been sampled at the same frequency interval (by an 8-length DFT). In the case of the 9-length window, that is done by combining its first and last coefficients by addition (called periodic summation, with period 8). Because of symmetry, those coefficients are equal. So in a spectral analysis (of data) application, an equivalent operation is to add the 9th data sample to the 1st one, and apply the same 8-length DFT-even window function seen in the top figure.
Датум
Извор Сопствено дело
Аутор Bob K
Дозвола
(Поновно коришћење ове датотеке)
Ја, носилац ауторског права над овим делом, објављујем исто под следећом лиценцом:
Creative Commons CC-Zero Ова датотека је доступна под лиценцом Creative Commons 1.0 Универзална – посвећивање јавном власништву.
Особа која је учествовало у раду на овом документу посветила је дело јавном власништву, одричући се свих права на то дело широм света, по закону о ауторским правима и повезаним или сродним законским правима које би имао/имала, у мери дозвољеној законом. Можете да умножавате, мењате, расподељујете и прилагођавате дело, чак и у комерцијалне сврхе, без тражења дозволе.

Остале верзије

Also see File:Sampling_the_Discrete-time_Fourier_transform.svg.
This file was derived from: Two 8-point Gaussian window functions.svg
This file was derived from: Spectral leakage from two 8-point Gaussian windows.png

This file was derived from: Comparison of symmetric and periodic triangular window functions.svg
SVG genesis
InfoField
 
The source code of this SVG is invalid due to 3 errors.
 
This W3C-invalid vector image was created with LibreOffice.
Usage
InfoField
Additional information and an external link to this image can be found at Window_function#DFT-even.
Octave/gnuplot source
InfoField
click to expand

This graphic was created with the help of the following Octave script:

function out=gauss(M,sigma)
out = exp(-.5*(((0:M)-M/2)/(sigma*M/2)).^2);
endfunction

% Options
  frame_background_gray = true;

  if frame_background_gray
   graphics_toolkit("qt")         % has "insert text" option
%  graphics_toolkit("fltk")       % has cursor coordinate readout
   frame_background = .94*[1 1 1];
   d  = 4;                        % amount to add to text sizes
   dl = 16;                       % amount to large marker size
  else
   graphics_toolkit("gnuplot")    % background will be white regardless of value below
   frame_background = .94*[1 1 1];
   d=0; ds = 0; dl = 0;
  endif

% (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)   % size of numeric tick labels
  set(0, "DefaultLineLinewidth",1)
  set(0, "DefaultLineMarkersize",14+dl)
  set(0, "DefaultTextFontsize",12+d)
  set(0, "DefaultFigureColor",frame_background)
  
  darkgreen = [33 150 33]/256;

  M=7*8*100;        	% big number, divisible by 7 and 8
% Generate M+1 samples of a Gaussian window
  window = gauss(M, 0.4);
  N=8;                  % actual window size, in "hops"

% Sample the window.
% Scale the abscissa. 0:M samples --> 0:7 "hops", and take 8 symmetrical hops, from 0 to 7
  sam_per_hop_7 = M/7;
% symmetric8 = window(1+(0:7)*sam_per_hop_7);
  symmetric8 = gauss(7,0.4);

% Scale the abscissa. 0:M samples --> 0:8 "hops", and take 9 symmetrical hops, from 0 to 8
  sam_per_hop_8 = M/8;
% symmetric9 = window(1+(0:8)*sam_per_hop_8);
  symmetric9 = gauss(8,0.4);
  periodic8  = symmetric9(1:8);
  periodic_summation = [symmetric9(1)+symmetric9(N+1) symmetric9(2:N)];

% Compare windows based on their processing gain (PG) (Harris,1978,p 56,eq 15), because the ENBW
% formula allows values less than one "bin" (for some windows) when used with a 9-point periodic 
% summation and an 8-point DFT.  That actually makes sense, because a bandwidth of 1.1 (for instance)
% measured in 1/9-width bins is only 0.98 measured in 1/8-width bins. But values less than one
% are not customary, which could cause distrust.
  PG_symmetric8 = sum(symmetric8)^2/sum(symmetric8.^2)	% 4.9281
  PG_periodic8  = sum(periodic8)^2 /sum(periodic8.^2)	% 5.5046
  PG_symmetric9 = sum(symmetric9)^2/sum(symmetric9.^2)	% 5.6239

% Also note that the correct incoherent "power" measurement for the
% periodic_summation window is sum(symmetric9.^2),
% not sum(periodic_summation.^2), because
% E{(h(1)·X(1) + h(9)·X(9))^2} = (h(1)^2 + h(9)^2)·E{X^2},
% not (h(1)^2 + 2·h(1)·h(9) + h(9)^2)·E{X^2}.
%------------------------------------------------------------------
% Plot the points
  figure("position", [100 100 700 400], "color",frame_background)
#{
  x1 = .06;               % left margin
  x2 = .02;               % right margin
  y1 = .10;               % bottom margin for annotation
  y2 = .08;               % top margin for title

  width = 1-x1-x2;
  height= 1-y1-y2;

  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])
#}

% These unusual looking coordinates are default values assigned by gnuplot.
% In order to force qt to do the same, I measured them and put them here.
  original = [.077 .1275 .970-.077 .865-.1275];
  subplot("position", original)

  plot(0:7, symmetric8,  "color","red",   ".")
  hold on
  plot(8, symmetric9(9), "color","green", ".")
  plot(0:7, periodic8,   "color","blue",  ".")

% Connect the dots
  hops = (0:M)/sam_per_hop_8;
  plot(hops , window, "color","blue")         % periodic

 hops = (0:M)/sam_per_hop_7;
 plot(hops, window, "color","red")           % symmetric

 xlim([0 8])
 grid on
 set(gca, "xgrid","on")
 set(gca, "ygrid","on")
 set(gca, "ytick",[0:.25:1])
 set(gca, "xtick",[0:8])

 title("8-point Gaussian window functions", "fontsize",14+d, "fontweight","normal");
 xlabel('\leftarrow  n  \rightarrow', "fontsize",14+d, "fontweight","bold")

 text(3.74, .56, 'symmetric \rightarrow', 'color', 'red')
 str = {'\leftarrow periodic','     ("DFT-even")'};
 text(5.1, .813, str, 'color', 'blue')

if frame_background_gray
  annotation("textarrow", [.737 .954], [.233 .158], "color",darkgreen,...
        "string",{"discarded OR added to value at n=0";...
        "             (periodic summation)"}, "fontsize",10+d,...
        "linewidth",1.5, "headstyle","vback1", "headlength",5, "headwidth",5)
else
% After this call, the gnuplot cursor units change to a normalized ([0,1]) coordinate system
  annotation("textarrow", [.737 .954], [.233 .158], "color",darkgreen,...
        "string",{"discarded OR added to value at n=0                     ";...
        "             (periodic summation)"}, "fontsize",10+d,...
        "linewidth",1.5, "headstyle","vback1", "headlength",5, "headwidth",5)
endif

%==================================================================
% Now compute and plot the DTFTs and DFTs
  M = 64*N;      % DTFT size
  dr = 80;       % dynamic range (decibels)
%------------------------------------------------------------------
  figure("position", [100 200 700 400], "color",frame_background)
  subplot("position", original)

% Do the DFT plots first, followed by legend(), because we want legend() to display only 3 dots.
% The gnuplot version can suppress the other 3 lines (by specifying just "" for text),
% but the qt version is not that good.
% Compute an 8-sample DFT of the symmetric window DTFT
  H = abs(fft(symmetric8));
  H = fftshift(H);
  H = H/max(H);
  H = 20*log10(H);
  H = max(-dr,H);
  plot(-N/2:(N/2-1), H, "color","red", ".")
  hold on

%------------------------------------------------------------------
% Compute an 8-sample DFT of the periodic window DTFT
  H = abs(real(fft(periodic8)));   % real() is redundant... just to illustrate a point
  H = fftshift(H);
  H = H/max(H);
  H = 20*log10(H);
  H = max(-dr,H);
  plot(-N/2:(N/2-1), H, "color","blue", ".")

%------------------------------------------------------------------
% Compute an 8-sample DFT of the 9-sample symmetric window DTFT
% real() is redundant... just to show that it doesn't mess anything up
  H = abs(real(fft(periodic_summation)));
  H = fftshift(H);
  H = H/max(H);
  H = 20*log10(H);
  H = max(-dr,H);
  plot(-N/2:(N/2-1), H, "color","green", ".")

%------------------------------------------------------------------
#{
h = legend(['PG=' num2str(PG_symmetric8,'%5.4f') ', L = 8'],...
           ['PG=' num2str(PG_periodic8, '%5.4f') ', L=9-1 =8 (truncated)'],...
           ['PG=' num2str(PG_symmetric9,'%5.4f') ', L=9-1 =8 (added)'],...
           "location","south");
  set(h, "fontsize",10+d)
% legend boxoff
#}
%------------------------------------------------------------------
% Connect the dots
% DTFT of symmetric window
  H = abs(fft([symmetric8 zeros(1,M-N)]));
  H = fftshift(H);
  H = H/max(H);
  H = 20*log10(H);
  H = max(-dr,H);
  x = N*[-M/2:M/2-1]/M;

  plot(x, H, "color","red");
  ylim([-dr 0])

% DTFT of periodic window
  H = abs(fft([periodic8 zeros(1,M-N)]));
  H = fftshift(H);
  H = H/max(H);
  H = 20*log10(H);
  H = max(-dr,H);
  plot(x, H, "color","blue");

% DTFT of a 9-sample symmetric window
  H = abs(fft([symmetric9 zeros(1,M-N-1)]));
  H = fftshift(H);
  H = H/max(H);
  H = 20*log10(H);
  H = max(-dr,H);
  plot(x, H, "color","green");

  set(gca,"XTick", -N/2:N/2-1)
  grid on

  ylabel("decibels", "fontsize",12+d)
  xlabel("DFT bins", "fontsize",12+d, "fontweight","bold")
  title('"Spectral leakage" from three Gaussian windows', "fontsize",14+d, "fontweight","normal")

  text(-2.88, -11.66, {"        DTFT";'symmetric8 \rightarrow'}, "color","red",...
        "fontsize",10+d, "fontweight","bold")

% After this call, the gnuplot cursor units change to a normalized ([0,1]) coordinate system
  annotation("textarrow", [.132 .132], [.675 .51],...
        "color", "blue", "string", {"   DTFT";"periodic8"}, "fontsize",10+d,...
        "linewidth",1, "headstyle","vback1", "headlength",5, "headwidth",5)

  annotation("textarrow", [.301 .23], [.437 .437],...
        "color", darkgreen, "string", "DTFT symmetric9", "fontsize",10+d,...
        "linewidth",1, "headstyle","vback1", "headlength",5, "headwidth",5)

  annotation("textarrow", [.301 .197], [.357 .357],...
         "color",darkgreen, "string", "DFT8 (periodic summation)", "fontsize",10+d,...
         "linewidth",1, "headstyle","vback1", "headlength",5, "headwidth",5)

Натписи

Укратко шта ова датотека представља/приказује

Ставке приказане у овој датотеци

приказује

Нека вредност без ставке на Википодаци

Creative Commons CC0 License Serbian (Cyrillic script) (транслитерација)

27. септембар 2019

image/svg+xml

8ff1298a9fb25a794a80bb39839728791a66a247

743 пиксел

652 пиксел

Историја датотеке

Кликните на датум/време да бисте видели тадашњу верзију датотеке.

Датум/времеМинијатураДимензијеКорисникКоментар
тренутна22:40, 31. март 2020.Минијатура за верзију на дан 22:40, 31. март 2020.652 × 743 (108 kB)Bob KRemove legend from 2nd image, because: The equivalent noise bandwidth formula allows values less than one "bin" (for some windows) when used with a 9-point periodic summation and an 8-point DFT. That actually makes sense, because a bandwidth of 1.1 (for instance) measured in 1/9-width bins is only 0.98 measured in 1/8-width bins. But values less than one are not customary.
01:35, 29. јануар 2020.Минијатура за верзију на дан 01:35, 29. јануар 2020.652 × 743 (116 kB)Bob Kupdate for minor code change
16:31, 28. јануар 2020.Минијатура за верзију на дан 16:31, 28. јануар 2020.652 × 743 (119 kB)Bob Kminor tweaks
05:48, 28. јануар 2020.Минијатура за верзију на дан 05:48, 28. јануар 2020.652 × 743 (118 kB)Bob Kchange frame background from white to gray
18:24, 30. септембар 2019.Минијатура за верзију на дан 18:24, 30. септембар 2019.652 × 743 (96 kB)Bob Kchange a couple of figure labels
07:58, 29. септембар 2019.Минијатура за верзију на дан 07:58, 29. септембар 2019.652 × 743 (96 kB)Bob Kfixed code error, and updated image
23:38, 27. септембар 2019.Минијатура за верзију на дан 23:38, 27. септембар 2019.652 × 754 (101 kB)Bob KUser created page with UploadWizard

Нема страница које користе ову датотеку.

Метаподаци