Пређи на садржај

Датотека: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)

Натписи

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

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

приказује

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

скраћено име аутора српски (транслитерација): Bob K
Викимедија српски (транслитерација): Bob K

извор датотеке српски (транслитерација)

сопствено дело српски (транслитерација)

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

контролна сума српски (транслитерација)

8ff1298a9fb25a794a80bb39839728791a66a247

величина податка српски (транслитерација)

111.082 бајт

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

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

Метаподаци