我是一个数学背景的音频处理新手,所以我有很少的问题(很多,但很少开始)的问题,处理提取的样本使用fft。
我使用的是固定阵列长度的http://www.drdobbs.com/cpp/a-simple-and-efficient-fft-implementatio/199702312?pgno=1的fft实现。
我有一些样本(比如说1024个样本)。
Fft算法,采用输入复值(实值和虚值),将虚值设置为0,因为我没有任何,并且去掉了fft输出的虚部。
我还有下一个问题:
( 1)我假设样本是实数是正确的吗?
2)只有实数才能实现FFT的有效实现吗?我的意思是在计算中根本没有想象的部分。
( 3)如果我继续使用描述的过程,是否正确的假设是:如果fft输入中没有虚数据(全部为零),那么fft输出的虚部对于所有值也都是零吗?
如果问题已经存在,我很抱歉,但我没有找到任何令人满意的答案我的问题。
发布于 2016-05-06 00:21:42
( 1)我假设样本是实数是正确的吗?
是。
2)只有实数才能实现FFT的有效实现吗?我的意思是在计算中根本没有想象的部分。
如果有的话,它仍然需要在计算中使用虚数。(当然,它可以用一对实数来做复杂的数学运算,只需给第二个数字贴上“假想”的标签,但这样做有什么好处呢?)
( 3)如果我继续使用描述的过程,是否正确的假设是:如果fft输入中没有虚数据(全部为零),那么fft输出的虚部对于所有值也都是零吗?
这不对。
FFT输出中每个数字的绝对值与信号中每个频率的幅度成正比。
信号中每个频率的相位也被编码在输出中,作为复数的https://en.wikipedia.org/wiki/Argument_%28complex_analysis%29。也就是说,如果某个频率与正弦波不相位差90度,那么这个垃圾箱的论点就会是90度,也就是说,实数部分是0,虚部是振幅!对于不成90度倍数的相位,实部和虚部都是非零的。
如果您不关心阶段信息,您可以获取每个输出数字的绝对值-即sqrt(real*real + imag*imag)。
https://stackoverflow.com/questions/37061964
复制相似问题