Understanding Window Functions
The Intel IPP provides the following functions to
generate window samples:
These functions generate the window samples and
multiply them into an existing signal. To obtain the window samples themselves,
initialize the vector argument to the unity vector before calling the window
function.
If you want to multiply different frames of a signal
by the same window multiple times, it is better to first calculate the window
by calling one of the windowing functions (
ippsWinHann
, for example) on a
vector with all elements set to 1.0. Then use one of the vector multiplication
functions (ippsMul
, for
example) to multiply the window into the signal each time a new set of input
samples is available. This avoids repeatedly calculating the window samples.
This is illustrated in the following code example.
Example
void multiFrameWin( void ) { Ipp32f win[LEN], x[LEN], X[LEN]; IppsFFTSpec_R_32f* ctx; ippsSet_32f( 1, win, LEN ); ippsWinHann_32f_I( win, LEN ); /// ... initialize FFT context while(1 ){ /// ... get x signal /// ippsMul_32f_I( win, x, LEN ); ippsFFTFwd_RToPack_32f( x, X, ctx, 0 ); } }
For more information on windowing, see: [Jack89],
section 7.3,
Windows in Spectrum Analysis
; [Jack89],
section 9.1,
Window-Function Technique
; and [Mit93],
section 16-2,
Fourier Analysis of Finite-Time Signals
.
For more information on these references, see also the Bibliography at the end
of this document.