使用 JTransforms 的 FFT:是基数 2 吗?

Posted

技术标签:

【中文标题】使用 JTransforms 的 FFT:是基数 2 吗?【英文标题】:FFT using JTransforms: is it radix 2? 【发布时间】:2020-02-07 19:13:02 【问题描述】:

我在 java 中使用来自 JTransforms 的 DoubleFFT_1D.realForward() 来处理样本。

有谁知道这个方法的输入 double[] a 的长度是否必须是 2 的幂?在 JTranforms 文档中找不到答案(可能错过了,或者我理解不正确)

我尝试使用具有随机条目数的样本并且它有效,但我只是意识到它是否正确执行并希望确保该方法确实是为任意数量的条目设计的。

谢谢

【问题讨论】:

【参考方案1】:

查看test code of DoubleFFT_1D::realForward(),它还将接受长度不是2的幂的输入数组:

final double[] actual = new double[2 * n];
final double[] expected = new double[2 * n];
// ...
if (!CommonUtils.isPowerOf2(n)) 
// ...

【讨论】:

啊,谢谢!您认为 FFT 的质量会受到影响吗? (我知道不同的问题) @pizza 我不是这方面的专家,所以真的帮不了你。

以上是关于使用 JTransforms 的 FFT:是基数 2 吗?的主要内容,如果未能解决你的问题,请参考以下文章

区分注释FFT算法

Stockham FFT 的更高基数(或更好)公式

如何将音频剪辑转换为数组以执行 FFT?

基数 32 FFT 实现

Xamarin Android 音频 DSP

jTransforms DoubleFFT_1D 前两个值