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 
00037 vec hamming(int n)
00038 {
00039   vec t(n);
00040 
00041   if (n == 1)
00042     t(0) = 0.08;
00043   else
00044     for (int i = 0;i < n;i++)
00045       t[i] = (0.54 - 0.46 * std::cos(2.0 * pi * i / (n - 1)));
00046 
00047   return t;
00048 }
00049 
00050 vec hanning(int n)
00051 {
00052   vec t(n);
00053 
00054   for (int i = 0;i < n;i++)
00055     t(i) = 0.5 * (1.0 - std::cos(2.0 * pi * (i + 1) / (n + 1)));
00056 
00057   return t;
00058 }
00059 
00060 // matlab version
00061 vec hann(int n)
00062 {
00063   vec t(n);
00064 
00065   for (int i = 0;i < n;i++)
00066     t(i) = 0.5 * (1.0 - std::cos(2.0 * pi * i / (n - 1)));
00067 
00068   return t;
00069 }
00070 
00071 vec blackman(int n)
00072 {
00073   vec t(n);
00074 
00075   for (int i = 0;i < n;i++)
00076     t(i) = 0.42 - 0.5 * std::cos(2.0 * pi * i / (n - 1)) + 0.08 * std::cos(4.0 * pi * i / (n - 1));
00077 
00078   return t;
00079 }
00080 
00081 vec triang(int n)
00082 {
00083   vec t(n);
00084 
00085   if (n % 2) { // Odd
00086     for (int i = 0; i < n / 2; i++)
00087       t(i) = t(n - i - 1) = 2.0 * (i + 1) / (n + 1);
00088     t(n / 2) = 1.0;
00089   }
00090   else
00091     for (int i = 0; i < n / 2; i++)
00092       t(i) = t(n - i - 1) = (2.0 * i + 1) / n;
00093 
00094   return t;
00095 }
00096 
00097 vec sqrt_win(int n)
00098 {
00099   vec t(n);
00100 
00101   if (n % 2) { // Odd
00102     for (int i = 0; i < n / 2; i++)
00103       t(i) = t(n - i - 1) = std::sqrt(2.0 * (i + 1) / (n + 1));
00104     t(n / 2) = 1.0;
00105   }
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 Fri May 1 11:09:19 2009 for IT++ by Doxygen 1.5.8