使用FFTW计算波长,幅度和相位

时间:2019-05-26 10:04:57

标签: signal-processing fftw phase amplitude

我试图用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

我还想获得正弦波的波长(不知道如何)和相位(也不知道如何做到这一点)

非常感谢您的帮助。

0 个答案:

没有答案