Intel® Integrated Performance Primitives (Intel® IPP) Developer Guide and Reference

ID 790148
Date 3/22/2024
Public
Document Table of Contents

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.