00001 00033 #include <itpp/base/window.h> 00034 00035 00036 namespace itpp { 00037 00038 00039 vec hamming(int n) 00040 { 00041 vec t(n); 00042 00043 if (n == 1) 00044 t(0) = 0.08; 00045 else 00046 for (int i=0;i<n;i++) 00047 t[i]=(0.54-0.46*std::cos(2.0*pi*i/(n-1))); 00048 00049 return t; 00050 } 00051 00052 vec hanning(int n) 00053 { 00054 vec t(n); 00055 00056 for (int i=0;i<n;i++) 00057 t(i) = 0.5 * (1.0 - std::cos(2.0*pi*(i+1)/(n+1))); 00058 00059 return t; 00060 } 00061 00062 // matlab version 00063 vec hann(int n) 00064 { 00065 vec t(n); 00066 00067 for (int i=0;i<n;i++) 00068 t(i) = 0.5 * (1.0 - std::cos(2.0*pi*i/(n-1))); 00069 00070 return t; 00071 } 00072 00073 vec blackman(int n) 00074 { 00075 vec t(n); 00076 00077 for (int i=0;i<n;i++) 00078 t(i) = 0.42 - 0.5 * std::cos(2.0*pi*i/(n-1)) + 0.08 * std::cos(4.0*pi*i/(n-1)); 00079 00080 return t; 00081 } 00082 00083 vec triang(int n) 00084 { 00085 vec t(n); 00086 00087 if (n % 2) { // Odd 00088 for (int i=0; i<n/2; i++) 00089 t(i) = t(n-i-1) = 2.0*(i+1)/(n+1); 00090 t(n/2) = 1.0; 00091 } else 00092 for (int i=0; i<n/2; i++) 00093 t(i) = t(n-i-1) = (2.0*i+1)/n; 00094 00095 return t; 00096 } 00097 00098 vec sqrt_win(int n) 00099 { 00100 vec t(n); 00101 00102 if (n % 2) { // Odd 00103 for (int i=0; i<n/2; i++) 00104 t(i) = t(n-i-1) = std::sqrt(2.0*(i+1)/(n+1)); 00105 t(n/2) = 1.0; 00106 } else 00107 for (int i=0; i<n/2; i++) 00108 t(i) = t(n-i-1) = std::sqrt((2.0*i+1)/n); 00109 00110 return t; 00111 } 00112 00113 00114 00115 } // namespace itpp
Generated on Wed Apr 18 11:45:34 2007 for IT++ by Doxygen 1.5.2