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