File:Processing losses for 3 window functions.gif

From formulasearchengine
Jump to navigation Jump to search

Original file(574 × 609 pixels, file size: 21 KB, MIME type: image/gif, 0.1 s)

This file is from Wikimedia Commons and may be used by other projects. The description on its file description page there is shown below.

Summary

Description
English: Comparison of three window functions in terms of their effects on equal-strength sinusoids with additive noise. The noise "floor" is smoothed by averaging many DFTs to reveal the substantial difference in levels, caused by the different window functions. In each case, the sinusoid on the left suffers no scalloping and the one on the right exhibits worst-case scalloping. The rectangular window produces the most scalloping but lowest noise-floor. The Hann window has a higher noise floor but much less potential scalloping, which results in the lowest "worst case processing loss" of these 3 functions.
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:
Creative Commons CC-Zero This file is made available under the Creative Commons CC0 1.0 Universal Public Domain Dedication.
The person who associated a work with this deed has dedicated the work to the public domain by waiving all of their rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.

Other versions Derivative works of this file:  Processing losses for 3 window functions.svg,
GIF development
InfoField
 
This GIF graphic was created with LibreOffice.
Octave/gnuplot source
InfoField
click to expand

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

pkg load signal
graphics_toolkit gnuplot
clear all; close all; clc

  hfig= figure("position",[100 0 574 609]);
 
  N = 256;                % sams_per_fft;
  window1 = rectwin(N)'/sum(rectwin(N));
  window2 = hann(N)'/sum(hann(N));
  window3 = blackmanharris(N)'/sum(blackmanharris(N));
%
  Fs = N;                 % sams_per_sec;
  HzPerBin = Fs/N;
  F1 = -20.0*HzPerBin;    % bin -20
  F2 = +20.5*HzPerBin;    % bin 20.5
%
  L = 100000;
  n = 1:L;
  x = exp(j*2*pi*F1/Fs*n) + exp(j*2*pi*F2/Fs*n);
  x = x + (randn(1,L) +j*randn(1,L))*1.4;
%
  sams_per_offset = 0.75*N;    % overlap = 25%
%
% number of samples available beyond just one FFT
  excess_sams = length(x) - N;
%
  j1 = floor( excess_sams / sams_per_offset );
  sams_per_offset = floor( excess_sams / j1 );
  num_ffts = 1 + j1;
%
% define the first block of data
  samples = 1:N;
%
  amplitude1 = zeros(1,N);
  amplitude2 = zeros(1,N);
  amplitude3 = zeros(1,N);
%
% Loop over all the available blocks
  for j1 = 1 : num_ffts
    amplitude1 = amplitude1 + abs(fft( x(samples) .* window1 ));
    amplitude2 = amplitude2 + abs(fft( x(samples) .* window2 ));
    amplitude3 = amplitude3 + abs(fft( x(samples) .* window3 ));
    samples = samples + sams_per_offset;
  end
%
  amplitude1  = 20*log10(fftshift(amplitude1/num_ffts));
  amplitude2  = 20*log10(fftshift(amplitude2/num_ffts));
  amplitude3  = 20*log10(fftshift(amplitude3/num_ffts));
% 
  abscissa = -40:40;
  set(gca,'FontSize',8)
  subplot(3,1,1);
  h = area(abscissa, amplitude1(abscissa +N/2+1), ...
  'FaceColor', [.871 .49 0], 'edgecolor', [.871 .49 0]);
  set(h,'BaseValue',-20)
  set(gca, 'XTick', [-20 0 20.5], 'XTickLabel',[' '; ' '; ' '], 'YGrid','on', 'color', 'white')
  title('Processing losses for sinusoids in additive noise','fontsize', 12);
  xlim([-40 40])
  ylim([-20 2])
  ylabel('decibels')
  text(-40, 3.5, 'Rectangular window')
%
  subplot(3,1,2);
  h = area(abscissa, amplitude2(abscissa +N/2+1), ...
  'FaceColor', [.871 .49 0], 'edgecolor', [.871 .49 0]);
  set(h,'BaseValue',-20)
  set(gca, 'XTick', [-20 0 20.5], 'XTickLabel',[' '; ' '; ' '], 'YGrid','on', 'color', 'white')
  xlim([-40 40])
  ylim([-20 2])
  ylabel('decibels')
  text(-40, 3.5, 'Hann window')
%
  subplot(3,1,3);
  h = area(abscissa, amplitude3(abscissa +N/2+1), ...
  'FaceColor', [.871 .49 0], 'edgecolor', [.871 .49 0]);
  set(h,'BaseValue',-20)
  set(gca, 'XTick', [-20 0 20.5], 'XTickLabel',[' '; ' '; ' '], 'YGrid','on', 'color', 'white')
  xlim([-40 40])
  ylim([-20 2])
  ylabel('decibels')
  text(-40, 3.5, 'Blackman-Harris')

Captions

Add a one-line explanation of what this file represents

Items portrayed in this file

depicts

25 February 2013

File history

Click on a date/time to view the file as it appeared at that time.

Date/TimeThumbnailDimensionsUserComment
current16:37, 3 March 2013Thumbnail for version as of 16:37, 3 March 2013574 × 609 (21 KB)wikimediacommons>Bob KShorten three horizontal lines to make the scalloped peaks more apparent.

There are no pages that use this file.