NFFT

Purpose:

Calculates an N point FFT by zero padding or time aliasing.

Syntax:

NFFT(series, N, wintype, ampflag)

series

-

An input series

N

-

Optional. An integer, the FFT length. Defaults to the length of the input series.

wintype

-

Optional. An integer, the windowing function.

0:

Hamming

1:

Hanning

2:

Rectangular (none)

3:

Kaiser

4:

Flattop

5:

Blackman

6:

Modified Flattop

7:

Dolph-Chebychev

8:

Taylor

9:

Blackman-Harris

ampflag

-

Optional. An integer. Windowing amplitude correction method.

0:

do not correct amplitude (default)

1:

correct amplitude

2:

correct RMS amplitude

3:

correct mean-squared amplitude

Returns:

A complex series or array, the N point FFT of the input.

Example:

W1: 1..12

W2: nfft(w1, 20)

W3: nfft(w1, 4)

W4: decimate(fft(w1), 3)

 

W2 contains 20 samples of the FFT of W1 with 8 zeros appended for an input length of 20. W3 contains 4 samples of the FFT of W1. This is numerically equivalent to decimating the full FFT by 3 as shown in W4, but because a 4 point FFT is calculated, the computation is performed more quickly.

Example:

W1: 1..12

W2: nfft(w1, 20, 3)

W3: nfft(w1, 4, 3)

W4: decimate(fft(kaiser(w1)), 3)

 

Same as the first example except a Kaiser window is employed.

Remarks:

NFFT computes N equally spaced samples of the FFT by zero padding if N is greater than the series length or by time aliasing the input series if N is less than the series length.

 

For N < length(s), the result is numerically equivalent to decimating the full FFT (where the number of samples is equal to length(s)), however, the computation is generally faster since a shorter FFT is computed.

 

If a windowing function is specified, the window is applied to the entire input series.

 

If ampflag == 1, the correction factor is the mean of the spectral window. This assures that the spectrum of a sinusoid of amplitude A has a peak of A.

 

If ampflag == 2, the correction is applied as follows:

 

w = winfun(s) * rms(s) / rms(winfun(s)) 

 

where winfun is Blackman, Blackmanharris, Flattop, Hamming, Hanning or Kaiser. This assures that:

 

sqrt(area(psd(w))) == rms(s) approximately

 

If ampflag == 3, the correction is applied as follows:

 

w = winfun(s) / sqrt(mean(win * win) 

 

where win is the windowing function.

 

See DADiSP/FFTXL to optimize the underlying FFT computation.

See Also:

BLACKMAN

DADiSP/FFTXL

FFT

FLATTOP

HAMMING

HANNING

KAISER

NSPECTRUM

WINFUNC