- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 jTransforms 库对 WAV 文件进行频谱分析:Official Site
但是我在如何使用 jTransforms 将 WAV 文件转换为 FFT 可接受的输入以及如何在 FFT 后显示频谱方面遇到问题?我在 Google 上进行了搜索,发现我需要以某种方式将 WAV 文件转换为 double[]
或 Complex[]
,然后我应该如何解释输出? p>
抱歉,我对 FFT 很陌生,所以这个问题可能听起来非常愚蠢。非常感谢!
最佳答案
我不了解您的图书馆,但我猜他们有关于如何应用转换的大量文档。
关于解释,如果您使用复数变换,您可以将实部解释为相应频率仓的能量,将虚部解释为正弦曲线的相位。功率谱密度 (PSD) 可以通过以下方式计算
real(fftData)*conj(fftData)
等于
abs(fftData^2)
(因此将实部与其复共轭相乘)。
您可能需要考虑的一件事是重新缩放您的 fft 输出。一些算法按与 fftSize 成比例的方式缩放输出。因此,您必须将输出乘以 1/fftSize。
最后一件事,如果您不知道,您只需采用 fft 输出的一半,因为频谱是对称的。中间 bin (fftSize/2) 通常是镜像基频,等于 fftData[0]。这标志着奈奎斯特频率,这是您可以使用给定 fftSize 分析的最高频率。因此,如果您想显示高达 22kHz 的频率,请确保您的 fftSize 至少为 44k。
FFT 有很多陷阱,因此请务必阅读某些部分并了解您在其中做什么。如果您只想使用数学,那么数学本身并不那么重要,因此您可以跳过它们。
编辑:还有更多。考虑使用锥形窗口(高斯、汉明、汉宁...)对输入数据进行加权,以避免在不将整个 wav 文件作为输入时出现令人讨厌的边缘效应。否则,您的 fft 输出中将会出现人为的高频,而这些高频在原始信号中根本不存在。
关于java - 在 WAV 文件上使用 jTransforms 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8801105/
当我使用 jTransform 时。 https://sites.google.com/site/piotrwendykier/software/jtransforms 用我的应用程序对我的 pcm
我正在为 Google Glass 开发一个应用程序,该应用程序自录制音频以来实时显示峰值电流峰值频率。我当前的问题是频率报告变化非常快,因此很难确定频率我也不确定我的 NumberFormat 输出
我有一张图像,我想使用 FFT 将其转换为频域,Java 似乎缺少这方面的库,但我找到了两个。一个是 JTransforms,另一个不太知名,没有名字。 对于不太知名的 2D 只能具有二次幂的长度值,
我正在使用 Jtransforms java 库对给定的数据集执行分析。 数据示例如下: 980,988,1160,1080,928,1068,1156,1152,1176,1264 我在 jTran
鉴于我只想选择频率,我正在尝试计算逆 FFT。以下是我进行 FFT 的方法: final double[] points = reader.readPoints(); final DoubleFFT_
我一直在寻找快速和完整的 DSP java 库来与 android 音频操作一起使用。我对 FFT 的高度计算有疑问。然后我找到了 JTransforms。我无法在任何地方找到有关如何使用它的文档。具
我正在尝试使用 jTransforms 库对 WAV 文件进行频谱分析:Official Site 但是我在如何使用 jTransforms 将 WAV 文件转换为 FFT 可接受的输入以及如何在 F
我一直在阅读 SO 中有关 FTT 和使用 JTransform 的所有帖子。我有一个真实数据,它的大小为 N。我想将它传递给 FFT,以便我可以计算每个频率的幅度。 我已经使用 FFT 函数在 ma
我正在使用 JTransforms realForwardFull 和 RealInverse 来测试它们的工作原理。我的理解是,在您将音频信号传递给 realForwardFull 然后应用 Rea
我想展示一些PCM数据的可视化效果。目标是显示如下内容: 我搜索并发现 JTransform 是正确的库。但是,我找不到如何使用这个库的好指南。如何将我的 PCM 数据转换为可用于绘制条形的频带/频率
我正在尝试将 JTransforms-3.0-javadoc.jar 文件包含到我在 android studio 中的项目中,并在这里查看了类似的问题,但我似乎没有任何运气。这里有人知道让它工作所需
我想做的是用 Java 计算图像的 2D DCT,然后将结果保存回文件。 读取文件: coverImage = readImg(coverPath); private BufferedImage re
我正在尝试使用 JTransform 获取 bufferedImage 的 DCT。当我可视化转换时,它当前看起来像这样 http://tinypic.com/r/2vcxhzo/8 为了使用 Jtr
我正在尝试使用以下代码计算时间序列中样本窗口的自相关。我正在对该窗口应用 FFT,然后计算实部和虚部的大小并将虚部设置为零,最后对其进行逆变换以获得自相关: DoubleFFT_1D fft = ne
我正在使用 Java 中的 JTransforms 中的 DoubleFFT_1D.realForward() 来处理示例。 有谁知道这个方法输入的double[] a的长度是否必须是2的幂?在 JT
我尝试对长度为4000的输入信号进行FFT。我的java代码如下: Vector signal = readFile("signal.txt"); double[] input = n
我目前正在使用 JTransforms 库来计算 FS 为 44100 Hz 的一秒信号的 DFT。代码非常简单: DoubleFFT_1D fft = new DoubleFFT_1D(SIZE);
我有时域数据样本,这些样本不断更新名为“rollHistory”的 LinkedList,然后显示在图中,如下所示: if (rollHistory.size() > HISTORY_SIZE) {
我对任意长度的数组执行 FFT。API可以引用如下: realForward public void realForward(double[] a) Computes 1D forward DFT o
我正在尝试为 JTransforms 安装库。我从这里下载了 .jar 文件:https://sites.google.com/site/piotrwendykier/software/jtransf
我是一名优秀的程序员,十分优秀!