comparison 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
comparison
equal deleted inserted replaced
126:7669b3aa3bc9 132:0523dbfda035
52 52
53 void 53 void
54 KaiserWindow::init() 54 KaiserWindow::init()
55 { 55 {
56 double denominator = bessel0(m_beta); 56 double denominator = bessel0(m_beta);
57 for (int i = 0; i < m_length; ++i) { 57 bool even = (m_length % 2 == 0);
58 for (int i = 0; i < (even ? m_length/2 : (m_length+1)/2); ++i) {
58 double k = double(2*i) / double(m_length-1) - 1.0; 59 double k = double(2*i) / double(m_length-1) - 1.0;
59 m_window.push_back(bessel0(m_beta * sqrt(1.0 - k*k)) / denominator); 60 m_window.push_back(bessel0(m_beta * sqrt(1.0 - k*k)) / denominator);
60 } 61 }
62 for (int i = 0; i < (even ? m_length/2 : (m_length-1)/2); ++i) {
63 m_window.push_back(m_window[int(m_length/2) - i - 1]);
64 }
61 } 65 }