【发布时间】:2011-12-02 06:11:21
【问题描述】:
我已经在我的 Android 手机上记录了来自我的麦克风的数据数组 [1024],并通过真实数据的一维正向 DFT 传递它(将另外 1024 位设置为 0)。我将数组保存到一个文本文件中,并重复了 8 次。
我得到了 16384 个结果。我在 Excel 中打开了文本文件并制作了一个图表来查看它的样子(x=数组索引,y=返回数字的大小)。在 110 和 232 左右有一些巨大的尖峰(正和负),小尖峰以这种方式持续到 1817 年和 1941 年左右,尖峰再次变大,然后再次下降。
我的问题是,无论我在哪里寻求有关它提到获取实数和虚数的主题的帮助,我只有一个一维数组,这是我从 Piotr Wendykier 的课程中使用的方法得到的:
DoubleFFT_1D.realForwardFull(audioDataArray); // from the library JTransforms.
我的问题是:我需要对这些数据执行什么操作才能返回频率? 录制的声音是我在吉他的底弦(第 5 品)上弹奏“A”(大约 440Hz)。
【问题讨论】:
-
我以为我们在您之前的问题中已经讨论过这个问题:JTransforms FFT in Android from PCM data ?
-
我想知道我应该查看哪些结果,是否需要进一步计算?肯定一切都会在 realFullForward() 方法中处理吗?我在他的课堂上遵循了代码,但很难看到他对数据做了什么(没有 cmets、名为 strangley 的方法等)。
-
您实际上并没有说出您想要实现的目标,或者输入信号的性质是什么,但 FFT 通常只是过程中的一个步骤,例如生成功率谱或频谱图。
-
@hotpaw2 在你之前的另一个类似问题中也回答了这个问题:stackoverflow.com/questions/7651633/using-fft-in-android - 我希望你确实阅读人们给你的答案?
-
我当然知道,但我对我发现幅度的想法感到困惑,并将其与频率联系起来。
标签: java android signal-processing fft pcm