IT++ Logo Newcom Logo

window.cpp

Go to the documentation of this file.
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
SourceForge Logo

Generated on Thu Apr 19 14:43:44 2007 for IT++ by Doxygen 1.5.1