File:Scalloping and noise floor comparisons (2 window functions).png
Page contents not supported in other languages.
Tools
Actions
General
In other projects
Appearance
Scalloping_and_noise_floor_comparisons_(2_window_functions).png (562 × 457 pixels, file size: 22 KB, MIME type: image/png)
![]() | This is a file from the Wikimedia Commons. Information from its description page there is shown below. Commons is a freely licensed media file repository. You can help. |
Summary
DescriptionScalloping and noise floor comparisons (2 window functions).png |
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:
|
|||||
Other versions |
Derivative works of this file:
|
|||||
Script InfoField | Matlab codeN = 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/Time | Thumbnail | Dimensions | User | Comment | |
---|---|---|---|---|---|
current | 17:46, 19 December 2011 | ![]() | 562 × 457 (22 KB) | Bob K | Change graph format to area fill to highlight noise floor comparison. |
16:52, 19 December 2011 | ![]() | 572 × 461 (24 KB) | Bob K |
File usage
The following pages on the English Wikipedia use this file (pages on other projects are not listed):
Metadata
This file contains additional information, probably added from the digital camera or scanner used to create or digitize it.
If the file has been modified from its original state, some details may not fully reflect the modified file.
Date and time of digitizing |
|
---|---|
File change date and time | 17:39, 19 December 2011 |
Horizontal resolution | 28.34 dpc |
Vertical resolution | 28.34 dpc |