29 #ifndef __INCLUDE_MIST_WINDOW_FUNCTION_H__
30 #define __INCLUDE_MIST_WINDOW_FUNCTION_H__
33 #ifndef __INCLUDE_MIST_H__
42 namespace window_function
48 template <
typename T,
class Allocator >
49 inline void hamming(
const array1< T, Allocator > &in, array1< T, Allocator > &out )
51 out.resize( in.size( ) );
53 size_t length = in.size( );
55 for(
size_t i = 0 ; i < length ; i++ )
57 double x =
static_cast< double >( i ) / static_cast< double >( length );
58 out[ i ] = in[ i ] * ( 0.54 - 0.46 * cos( 2.0 * 3.141592 * x ) );
67 template <
typename T,
class Allocator >
68 inline void blackman(
const array1< T, Allocator > &in, array1< T, Allocator > &out )
70 out.resize( in.size( ) );
72 size_t length = in.size( );
74 for(
size_t i = 0 ; i < length ; i++ )
76 double x =
static_cast< double >( i ) / static_cast< double >( length );
77 out[ i ] = in[ i ] * ( 0.42 - 0.5 * cos( 2.0 * 3.141592 * x ) + 0.08 * cos( 4.0 * 3.141592 * x ) );
86 template <
typename T,
class Allocator >
87 inline void hann(
const array1< T, Allocator > &in, array1< T, Allocator > &out )
89 out.resize( in.size( ) );
91 size_t length = in.size( );
93 for(
size_t i = 0 ; i < length ; i++ )
95 double x =
static_cast< double >( i ) / static_cast< double >( length );
96 out[ i ] = in[ i ] * ( 0.5 - 0.5 * cos( 2.0 * 3.141592 * x ) );