我是fftw库的新手。我有一个n个真实数据的数组,并使用fftw_plan_dft_r2c_1d来查找fft频谱。什么是输出的大小。它和输入一样吗?此外,结果中心是0 Hz还是我必须手动完成?
答案 0 :(得分:3)
答案 1 :(得分:0)
这不是您问题的答案,但我希望它可以解决您的问题。
如果您只想查找数据的频谱,可以使用“halfcomplex”格式。
这是一段代码:
double *in,*out;
fftw_plan myplan;
in = fftw_malloc (N*sizeof(double));
out = fftw_malloc (N*sizeof(double));
myplan = fftw_plan_r2r_1d(N,in,out,FFTW_R2HC,FFTW_FORWARD);
// Fill in[] with your data.
...
fftw_execute(myplan);
现在out
包含r0,r1,r2,...,rn / 2,i(n + 1)/ 2-1,...,i2,i1,因为它写在手册中
out[0]
,是您的数据/信号的平均值。 out[1]
,是DFT第一个元素的真实部分。out
中。out[N-1]
,是DFT第一个元素的虚部。out[N-2]
,是DFT第二个元素的虚部。如果N是偶数,则r(N / 2)out[N/2]
是奈奎斯特频率幅度。
我是fftw库的新手
请记住,FFTW仅通过三角函数计算数据的乘积,但不会对它们进行标准化。 您可以找到有关halfcomplex here的更多信息。