FFT of a Zero-Padded Sinusoid

Looking back at Fig.8.2c, we see there are no negative dB
values. Could this be right? Could the spectral magnitude at all
frequencies be 1 or greater? The answer is no. To better see the true
spectrum, let's use *zero padding* in the time domain (§7.2.7)
to give *ideal interpolation* (§7.4.12) in the frequency domain:

zpf = 8; % zero-padding factor x = [cos(2*pi*n*f*T),zeros(1,(zpf-1)*N)]; % zero-padded X = fft(x); % interpolated spectrum magX = abs(X); % magnitude spectrum ... % waveform plot as before nfft = zpf*N; % FFT size = new frequency grid size fni = [0:1.0/nfft:1-1.0/nfft]; % normalized freq axis subplot(3,1,2); % with interpolation, we can use solid lines '-': plot(fni,magX,'-k'); grid on; ... spec = 20*log10(magX); % spectral magnitude in dB % clip below at -40 dB: spec = max(spec,-40*ones(1,length(spec))); ... % plot as before

Figure 8.4 shows the zero-padded data (top) and corresponding
interpolated spectrum on linear and dB scales (middle and bottom,
respectively). We now see that the spectrum has a regular
*sidelobe* structure. On the dB scale in Fig.8.4c,
negative values are now visible. In fact, it was desirable to
*clip* them at
dB to prevent deep nulls from dominating the
display by pushing the negative vertical axis limit to
dB or
more, as in Fig.8.1c (page ). This
example shows the importance of using zero padding to interpolate
spectral displays so that the untrained eye will ``fill in'' properly
between the spectral samples.

[How to cite this work] [Order a printed hardcopy] [Comment on this page via email]

Copyright ©

Center for Computer Research in Music and Acoustics (CCRMA), Stanford University