FFTS FFT和Matlab FFT之间的结果值不同

时间:2016-11-25 06:49:03

标签: android matlab fft dft

我是fft的新手。我正在将代码从Matlab转换为java / c以在Android设备中使用。我可以使用像Jtransform和Jwave这样的纯java fft lib来做这个,但是我想使用FFTS(https://github.com/anthonix/ffts)来获得本机性能,但输出不一样,我不知道为什么。我在Matlab网站上看到他们说缩放(http://www.mathworks.com/matlabcentral/answers/15770-scaling-the-fft-and-the-ifft),但我找不到缩放比例来匹配两个结果值。

我更新输出: Matlab的:

cat_name,
fam_surname,
SUM(pet_cost) AS 'pet_max_cost'

FFTS:

x = [0,1,2,3,4,5,6,7]
X=fft(x,8);

28.0000000000000 + 0.00000000000000i    
-4.00000000000000 + 9.65685424949238i
-4.00000000000000 + 4.00000000000000i
-4.00000000000000 + 1.65685424949238i
-4.00000000000000 + 0.00000000000000i
-4.00000000000000 - 1.65685424949238i
-4.00000000000000 - 4.00000000000000i
-4.00000000000000 - 9.65685424949238i

1 个答案:

答案 0 :(得分:1)

实数FFT(fft.real())不返回完整FFT结果的后半部分。这是因为,给定严格的实数输入(不是复数数据类型,或所有虚数等于零的虚数),FFT结果是共轭对称的;因此,后半部分是多余的(在共轭之后)。

完整的FFT返回复数结果向量的后半部分,即使是冗余的。 (只有当输入与非零虚数分量复杂时,完整FFT的后半部分才是非冗余的.fft.real()不允许这种输入。)