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