Keywords: Processing losses for 3 window functions.gif en 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 2013-02-25 10 16 32 own Bob K Octave script <source lang Matlab > graphics_toolkit gnuplot 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; figure 1 'color' 95 1 1 1 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' </source> cc-zero Uploaded with UploadWizard Window function Created with GNU Octave |