我试图用C ++和FFTW从一系列数字中获得幅度,波长和相位,但是运气不好,我想知道是否有人可以帮助我?
我已经搜索了Internet,但是由于我是FFT的新手,所以我无法找到我理解的足够具体的内容
我有370个双精度值,正在从文件读取到inputRecord数组中,例如1.11567、1.11599、1.11679
到目前为止,这是我使用FFTW所做的:
double *input;
fftw_complex *output;
fftw_plan p;
int binCount = inputCount/ 2; // inputCount = the number of records in the input file
input = (double*)fftw_malloc(sizeof(double) * inputCount);
output = (fftw_complex*)fftw_malloc(sizeof(fftw_complex) * inputCount);
p = fftw_plan_dft_r2c_1d(barCount, input, output, FFTW_ESTIMATE);
// Copy the double numbers into the FFTW input array
for (int i = 0; i < barCount; i++)
{
input[i] = inputRecord[i];
}
fftw_execute(p); //performs the fourier transform, fills `output'
然后我遍历FFTW输出数组,尝试通过以下计算获得幅度:Amplitude = 2 * abs(FFTOutput[i]) / 370
我还想获得正弦波的波长(不知道如何)和相位(也不知道如何做到这一点)
非常感谢您的帮助。