如何使用FFTW库从FFT数据计算波数?

时间:2014-01-27 05:50:15

标签: c fft fftw

我正在使用灰度红外相机。我从红外摄像机获取像素数据,然后将此像素数据转换为整数。获得Integer值后,我将数据规范化:

normalized[j] = static_cast<double>(GrayData[j]-min_value)/(max_value-min_value);
inputdata_fft[j] = static_cast<double>(normalized[j]);

规范化数据是否合适? 之后,我使用FFTW库进行FFT。我的代码如下:

Complex_data_out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex)*(buffer_size/2+1));
magnitude_fft_num = (double *) malloc(buffer_size*sizeof(double));
fft_for_proc = fftw_plan_dft_r2c_1d(buffer_size, inputdata_fft, Complex_data_out, FFTW_ESTIMATE);
fftw_execute(fft_for_proc);
for(int i=0; i<static_cast<int>(buffer_size/2); i++)
{
    real = Complex_data_out[i][0];  //Extract real component
    imag = Complex_data_out[i][1];   //Extract imaginary component
    magnitude_fft_num[i] = sqrt((real*real)+(imag*imag));  // Calculate the Magnitude
    data_out_fft[i] = static_cast<int>(magnitude_fft_num[i]);
}

现在我有FFT数据。如何从这些数据中计算波数?我想在x轴上绘制波数(每厘米),在y轴上绘制强度。如何获得强度值?我还发现了以下计算波数的方法:

data_out_fft[i] = static_cast<int>(magnitude_fft_num[i]*2*pii);

这是对的吗?请帮我。谢谢

0 个答案:

没有答案