IT++ Logo

window.cpp

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

Generated on Sat Apr 19 10:57:52 2008 for IT++ by Doxygen 1.5.5