comparison base/Window.h @ 483:fdaa63607c15

Untabify, indent, tidy
author Chris Cannam <cannam@all-day-breakfast.com>
date Fri, 31 May 2019 11:54:32 +0100
parents a73d94ee8072
children 701233f8ed41
comparison
equal deleted inserted replaced
482:cbe668c7d724 483:fdaa63607c15
48 * symmetrical window of size N+1 with the final element missing.) 48 * symmetrical window of size N+1 with the final element missing.)
49 */ 49 */
50 Window(WindowType type, int size) : m_type(type), m_size(size) { encache(); } 50 Window(WindowType type, int size) : m_type(type), m_size(size) { encache(); }
51 Window(const Window &w) : m_type(w.m_type), m_size(w.m_size) { encache(); } 51 Window(const Window &w) : m_type(w.m_type), m_size(w.m_size) { encache(); }
52 Window &operator=(const Window &w) { 52 Window &operator=(const Window &w) {
53 if (&w == this) return *this; 53 if (&w == this) return *this;
54 m_type = w.m_type; 54 m_type = w.m_type;
55 m_size = w.m_size; 55 m_size = w.m_size;
56 encache(); 56 encache();
57 return *this; 57 return *this;
58 } 58 }
59 virtual ~Window() { delete[] m_cache; } 59 virtual ~Window() { delete[] m_cache; }
60 60
61 void cut(T *src) const { cut(src, src); } 61 void cut(T *src) const { cut(src, src); }
62 void cut(const T *src, T *dst) const { 62 void cut(const T *src, T *dst) const {
63 for (int i = 0; i < m_size; ++i) dst[i] = src[i] * m_cache[i]; 63 for (int i = 0; i < m_size; ++i) dst[i] = src[i] * m_cache[i];
64 } 64 }
65 65
66 WindowType getType() const { return m_type; } 66 WindowType getType() const { return m_type; }
67 int getSize() const { return m_size; } 67 int getSize() const { return m_size; }
68 68
89 T *mult = new T[n]; 89 T *mult = new T[n];
90 int i; 90 int i;
91 for (i = 0; i < n; ++i) mult[i] = 1.0; 91 for (i = 0; i < n; ++i) mult[i] = 1.0;
92 92
93 switch (m_type) { 93 switch (m_type) {
94 94
95 case RectangularWindow: 95 case RectangularWindow:
96 for (i = 0; i < n; ++i) { 96 for (i = 0; i < n; ++i) {
97 mult[i] = mult[i] * 0.5; 97 mult[i] = mult[i] * 0.5;
98 } 98 }
99 break; 99 break;
100 100
101 case BartlettWindow: 101 case BartlettWindow:
102 if (n == 2) { 102 if (n == 2) {
103 mult[0] = mult[1] = 0; // "matlab compatible" 103 mult[0] = mult[1] = 0; // "matlab compatible"
104 } else if (n == 3) { 104 } else if (n == 3) {
105 mult[0] = 0; 105 mult[0] = 0;
107 } else if (n > 3) { 107 } else if (n > 3) {
108 for (i = 0; i < n/2; ++i) { 108 for (i = 0; i < n/2; ++i) {
109 mult[i] = mult[i] * (i / T(n/2)); 109 mult[i] = mult[i] * (i / T(n/2));
110 mult[i + n - n/2] = mult[i + n - n/2] * (1.0 - (i / T(n/2))); 110 mult[i + n - n/2] = mult[i + n - n/2] * (1.0 - (i / T(n/2)));
111 } 111 }
112 } 112 }
113 break; 113 break;
114 114
115 case HammingWindow: 115 case HammingWindow:
116 if (n > 1) { 116 if (n > 1) {
117 for (i = 0; i < n; ++i) { 117 for (i = 0; i < n; ++i) {
118 mult[i] = mult[i] * (0.54 - 0.46 * cos(2 * M_PI * i / n)); 118 mult[i] = mult[i] * (0.54 - 0.46 * cos(2 * M_PI * i / n));
119 } 119 }
120 } 120 }
121 break; 121 break;
122 122
123 case HanningWindow: 123 case HanningWindow:
124 if (n > 1) { 124 if (n > 1) {
125 for (i = 0; i < n; ++i) { 125 for (i = 0; i < n; ++i) {
126 mult[i] = mult[i] * (0.50 - 0.50 * cos(2 * M_PI * i / n)); 126 mult[i] = mult[i] * (0.50 - 0.50 * cos(2 * M_PI * i / n));
127 } 127 }
128 } 128 }
129 break; 129 break;
130 130
131 case BlackmanWindow: 131 case BlackmanWindow:
132 if (n > 1) { 132 if (n > 1) {
133 for (i = 0; i < n; ++i) { 133 for (i = 0; i < n; ++i) {
134 mult[i] = mult[i] * (0.42 - 0.50 * cos(2 * M_PI * i / n) 134 mult[i] = mult[i] * (0.42 - 0.50 * cos(2 * M_PI * i / n)
135 + 0.08 * cos(4 * M_PI * i / n)); 135 + 0.08 * cos(4 * M_PI * i / n));
136 } 136 }
137 } 137 }
138 break; 138 break;
139 139
140 case BlackmanHarrisWindow: 140 case BlackmanHarrisWindow:
141 if (n > 1) { 141 if (n > 1) {
142 for (i = 0; i < n; ++i) { 142 for (i = 0; i < n; ++i) {
143 mult[i] = mult[i] * (0.35875 143 mult[i] = mult[i] * (0.35875
144 - 0.48829 * cos(2 * M_PI * i / n) 144 - 0.48829 * cos(2 * M_PI * i / n)
145 + 0.14128 * cos(4 * M_PI * i / n) 145 + 0.14128 * cos(4 * M_PI * i / n)
146 - 0.01168 * cos(6 * M_PI * i / n)); 146 - 0.01168 * cos(6 * M_PI * i / n));
147 } 147 }
148 } 148 }
149 break; 149 break;
150 } 150 }
151 151
152 m_cache = mult; 152 m_cache = mult;
153 } 153 }
154 154
155 #endif 155 #endif