Mercurial > hg > qm-dsp
comparison dsp/transforms/FFT.cpp @ 357:650bbacf8288
Add forwardMagnitude
author | Chris Cannam <c.cannam@qmul.ac.uk> |
---|---|
date | Tue, 15 Oct 2013 18:26:38 +0100 |
parents | 3c7338aff6a8 |
children | 8c86761a5533 |
comparison
equal
deleted
inserted
replaced
356:42d416af5030 | 357:650bbacf8288 |
---|---|
130 ro[m_n - i - 1] = ro[i + 1]; | 130 ro[m_n - i - 1] = ro[i + 1]; |
131 io[m_n - i - 1] = -io[i + 1]; | 131 io[m_n - i - 1] = -io[i + 1]; |
132 } | 132 } |
133 } | 133 } |
134 | 134 |
135 void forwardMagnitude(const double *ri, double *mo) { | |
136 | |
137 double *io = new double[m_n]; | |
138 | |
139 forward(ri, mo, io); | |
140 | |
141 for (int i = 0; i < m_n; ++i) { | |
142 mo[i] = sqrt(mo[i] * mo[i] + io[i] * io[i]); | |
143 } | |
144 | |
145 delete[] io; | |
146 } | |
147 | |
135 void inverse(const double *ri, const double *ii, double *ro) { | 148 void inverse(const double *ri, const double *ii, double *ro) { |
136 | 149 |
137 for (int i = 0; i < m_n; ++i) { | 150 for (int i = 0; i < m_n; ++i) { |
138 m_c[i].r = ri[i]; | 151 m_c[i].r = ri[i]; |
139 m_c[i].i = ii[i]; | 152 m_c[i].i = ii[i]; |
170 { | 183 { |
171 m_d->forward(ri, ro, io); | 184 m_d->forward(ri, ro, io); |
172 } | 185 } |
173 | 186 |
174 void | 187 void |
188 FFTReal::forwardMagnitude(const double *ri, double *mo) | |
189 { | |
190 m_d->forwardMagnitude(ri, mo); | |
191 } | |
192 | |
193 void | |
175 FFTReal::inverse(const double *ri, const double *ii, double *ro) | 194 FFTReal::inverse(const double *ri, const double *ii, double *ro) |
176 { | 195 { |
177 m_d->inverse(ri, ii, ro); | 196 m_d->inverse(ri, ii, ro); |
178 } | 197 } |
179 | 198 |