如何计算实值输入的fft()输出的幅度和相位角?

时间:2011-11-25 03:19:54

标签: r fft

我有24个来自实值信号的样本。我对样本执行fft()函数并获得复杂的输出。我想获得每个非冗余谐波的幅度和相位角。我知道我的计算必须考虑别名,因为我有实值数据。我如何:

(1)从双面转换为单侧傅里叶变换,

我在这里听过几件事。例如,我将前12个谐波(即fft()输出的第2到第13个元素)乘以2并丢弃其余的谐波(即保持fft()输出的第1到第13个元素) ?

(2)计算单侧傅立叶变换的幅度,

我知道我可以使用Mod()功能,但我什么时候这样做?在我从双面转换为单面之前或之后?

(3)计算单侧傅立叶变换的相位角。

我知道我可以使用atan()函数来计算fft()输出的虚部与实部之比,但是,我什么时候这样做?在双面转换之前或之后?另外,如果atan未定义怎么办?

感谢。

1 个答案:

答案 0 :(得分:3)

由于您的输入是实数,FFT的输出将关于N / 2对称,因此您可以查看前N / 2个二进制位并将幅度按比例缩放2.对于该阶段,您理想情况下需要atan2将实部和虚部组件作为单独的参数并返回4象限结果的函数。