Mercurial > hg > qm-dsp
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 } |