File:Scalloping and noise floor comparisons (2 window functions).png

Scalloping_and_noise_floor_comparisons_(2_window_functions).png (562 × 457 pixels, file size: 22 KB, MIME type: image/png)

Summary

Description
English: Comparison of two 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. The sinusoid at bin -20 suffers no scalloping and the one at bin +20.5 exhibits worst-case scalloping. The rectangular window produces the most scalloping but also narrower peaks and lower noise-floor. A third sinusoid with amplitude -16 dB would be noticeable in the upper spectrum, but not in the lower spectrum.
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:

File:Processing losses for 3 window functions.svg is a vector version of this file. It should be used in place of this PNG file.

File:Scalloping and noise floor comparisons (2 window functions).png → File:Processing losses for 3 window functions.svg

For more information, see Help:SVG.

In other languages
Alemannisch  Bahasa Indonesia  Bahasa Melayu  British English  català  čeština  dansk  Deutsch  eesti  English  español  Esperanto  euskara  français  Frysk  galego  hrvatski  Ido  italiano  lietuvių  magyar  Nederlands  norsk bokmål  norsk nynorsk  occitan  Plattdüütsch  polski  português  português do Brasil  română  Scots  sicilianu  slovenčina  slovenščina  suomi  svenska  Tiếng Việt  Türkçe  vèneto  Ελληνικά  беларуская (тарашкевіца)  български  македонски  нохчийн  русский  српски / srpski  татарча/tatarça  українська  ქართული  հայերեն  বাংলা  தமிழ்  മലയാളം  ไทย  한국어  日本語  简体中文  繁體中文  עברית  العربية  فارسی  +/−
New SVG image

Script
InfoField

Matlab code

N = 256;                % sams_per_fft;
  window1 = rectwin(N)'/sum(rectwin(N));
  window2 = 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);
%
% 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 ));
    samples = samples + sams_per_offset;
  end
%
  warning off MATLAB:log:logOfZero
  amplitude1  = 20*log10(fftshift(amplitude1/num_ffts));
  amplitude2  = 20*log10(fftshift(amplitude2/num_ffts));
% 
  abscissa = -40:40;
  figure
  subplot(2,1,1); h = area(abscissa, amplitude1(abscissa +N/2+1), ...
  'FaceColor', [.871 .49 0], 'Linestyle', 'none')
  set(h,'BaseValue',-20)
  xlim([-40 40])
  ylim([-20 2])
  set(gca,'XTick', [-20 0 20.5])
  set(gca,'YGrid','on')
  xlabel('DFT bins')
  ylabel('decibels')
  title('Rectangular windowing');
%
  subplot(2,1,2); h = area(abscissa, amplitude2(abscissa +N/2+1), ...
  'FaceColor', [.871 .49 0], 'Linestyle', 'none')
  set(h,'BaseValue',-20)
  xlim([-40 40])
  ylim([-20 2])
  set(gca,'XTick', [-20 0 20.5])
  set(gca,'YGrid','on')
  xlabel('DFT bins')
  ylabel('decibels')
  title('Blackman-Harris windowing');

Captions

Add a one-line explanation of what this file represents

Items portrayed in this file

depicts

19 December 2011

File history

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

Date/TimeThumbnailDimensionsUserComment
current17:46, 19 December 2011Thumbnail for version as of 17:46, 19 December 2011562 × 457 (22 KB)Bob KChange graph format to area fill to highlight noise floor comparison.
16:52, 19 December 2011Thumbnail for version as of 16:52, 19 December 2011572 × 461 (24 KB)Bob K

The following page uses this file:

Metadata