Visible to Intel only — GUID: GUID-E2199D15-4723-4A97-BB9F-C050BAB837E4
Visible to Intel only — GUID: GUID-E2199D15-4723-4A97-BB9F-C050BAB837E4
Understanding Window Functions
The Intel IPP provides the following functions to generate window samples:
- Bartlett windowing function
- Blackman family of windowing functions
- Hamming windowing function
- WinHann windowing function
- WinKaiser windowing function
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.