comparison dsp/transforms/FFT.cpp @ 131:a586888bc06c kissfft

Add forwardMagnitude
author Chris Cannam
date Tue, 15 Oct 2013 18:26:38 +0100
parents 6ec45e85ed81
children 8c86761a5533
comparison
equal deleted inserted replaced
130:2053a308bb4d 131:a586888bc06c
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