comparison base/KaiserWindow.cpp @ 483:fdaa63607c15

Untabify, indent, tidy
author Chris Cannam <cannam@all-day-breakfast.com>
date Fri, 31 May 2019 11:54:32 +0100
parents 5ff562f5b521
children
comparison
equal deleted inserted replaced
482:cbe668c7d724 483:fdaa63607c15
15 15
16 #include "maths/MathUtilities.h" 16 #include "maths/MathUtilities.h"
17 17
18 KaiserWindow::Parameters 18 KaiserWindow::Parameters
19 KaiserWindow::parametersForTransitionWidth(double attenuation, 19 KaiserWindow::parametersForTransitionWidth(double attenuation,
20 double transition) 20 double transition)
21 { 21 {
22 Parameters p; 22 Parameters p;
23 p.length = 1 + (attenuation > 21.0 ? 23 p.length = 1 + (attenuation > 21.0 ?
24 ceil((attenuation - 7.95) / (2.285 * transition)) : 24 ceil((attenuation - 7.95) / (2.285 * transition)) :
25 ceil(5.79 / transition)); 25 ceil(5.79 / transition));
26 p.beta = (attenuation > 50.0 ? 26 p.beta = (attenuation > 50.0 ?
27 0.1102 * (attenuation - 8.7) : 27 0.1102 * (attenuation - 8.7) :
28 attenuation > 21.0 ? 28 attenuation > 21.0 ?
29 0.5842 * pow(attenuation - 21.0, 0.4) + 0.07886 * (attenuation - 21.0) : 29 0.5842 * pow(attenuation - 21.0, 0.4) + 0.07886 * (attenuation - 21.0) :
30 0); 30 0);
31 return p; 31 return p;
32 } 32 }
33 33
34 static double besselTerm(double x, int i) 34 static double besselTerm(double x, int i)
35 { 35 {
36 if (i == 0) { 36 if (i == 0) {
37 return 1; 37 return 1;
38 } else { 38 } else {
39 double f = MathUtilities::factorial(i); 39 double f = MathUtilities::factorial(i);
40 return pow(x/2, i*2) / (f*f); 40 return pow(x/2, i*2) / (f*f);
41 } 41 }
42 } 42 }
43 43
44 static double bessel0(double x) 44 static double bessel0(double x)
45 { 45 {
46 double b = 0.0; 46 double b = 0.0;
47 for (int i = 0; i < 20; ++i) { 47 for (int i = 0; i < 20; ++i) {
48 b += besselTerm(x, i); 48 b += besselTerm(x, i);
49 } 49 }
50 return b; 50 return b;
51 } 51 }
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 bool even = (m_length % 2 == 0); 57 bool even = (m_length % 2 == 0);
58 for (int i = 0; i < (even ? m_length/2 : (m_length+1)/2); ++i) { 58 for (int i = 0; i < (even ? m_length/2 : (m_length+1)/2); ++i) {
59 double k = double(2*i) / double(m_length-1) - 1.0; 59 double k = double(2*i) / double(m_length-1) - 1.0;
60 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);
61 } 61 }
62 for (int i = 0; i < (even ? m_length/2 : (m_length-1)/2); ++i) { 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]); 63 m_window.push_back(m_window[int(m_length/2) - i - 1]);
64 } 64 }
65 } 65 }