diff base/KaiserWindow.cpp @ 132:0523dbfda035

Make Kaiser window in two halves
author Chris Cannam
date Wed, 16 Oct 2013 12:52:37 +0100
parents 263181813eec
children fdaa63607c15
line wrap: on
line diff
--- a/base/KaiserWindow.cpp	Thu Oct 10 17:53:41 2013 +0100
+++ b/base/KaiserWindow.cpp	Wed Oct 16 12:52:37 2013 +0100
@@ -54,8 +54,12 @@
 KaiserWindow::init()
 {
     double denominator = bessel0(m_beta);
-    for (int i = 0; i < m_length; ++i) {
+    bool even = (m_length % 2 == 0);
+    for (int i = 0; i < (even ? m_length/2 : (m_length+1)/2); ++i) {
 	double k = double(2*i) / double(m_length-1) - 1.0;
 	m_window.push_back(bessel0(m_beta * sqrt(1.0 - k*k)) / denominator);
     }
+    for (int i = 0; i < (even ? m_length/2 : (m_length-1)/2); ++i) {
+        m_window.push_back(m_window[int(m_length/2) - i - 1]);
+    }
 }