问题标签 [fft]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
signal-processing - 计算快速傅里叶变换时..?
如果我们从具有两个通道的麦克风中获取声音,为了计算频谱,我们:
- 计算所有数据输入的快速傅立叶变换?
- 计算每个左右通道的快速傅立叶变换,然后对两者取平均值?
- 计算每个左右通道的快速傅立叶变换并获得两者的最大值?
- 以不同的方式计算?
python - Python/SciPy 的寻峰算法
我可以通过查找一阶导数的过零或其他东西来自己编写一些东西,但这似乎是一个足够通用的函数,可以包含在标准库中。有人知道吗?
我的特定应用是二维数组,但通常它会用于在 FFT 等中查找峰值。
具体来说,在这类问题中,有多个强峰,然后是许多较小的“峰”,这些“峰”只是由噪声引起的,应该忽略。这些只是例子;不是我的实际数据:
一维峰:
二维峰:
寻峰算法会找到这些峰值的位置(不仅仅是它们的值),并且理想情况下会找到真正的样本间峰值,而不仅仅是具有最大值的索引,可能使用二次插值或其他方法。
通常,您只关心几个强峰,因此选择它们要么是因为它们高于某个阈值,要么是因为它们是按幅度排序的有序列表的前n 个峰。
正如我所说,我知道如何自己写这样的东西。我只是想问一下是否有一个已知运行良好的预先存在的功能或包。
更新:
我翻译了一个 MATLAB 脚本,它适用于一维案例,但可能会更好。
更新更新:
Sixtenbe为一维案例创建了一个更好的版本。
algorithm - 关于 FFT 的说明
我知道以下推理有问题,但我不确定它是什么。
FFT:
给定两个多项式
A = a_0 + a_1 x + a_2 x^2 + ... + a_n x^n
和
B = b_0 + b_1 x + b_2 x^2 + ... + b_n x^n
您可以计算产品的系数
AB = \sum _k = 0 ^ 2n ( \sum _ j = 0 ^ k (a_j b_{k-j}))x^k
O(n log n )
及时。所以给定两个向量
(a_0, ..., a_n)
,(b_0, ..., b_n)
我们可以及时计算向量(通过将向量v_i = \sum j = 0 ^ k ( a_j b_{k-j})
嵌入O(n log n)
零。)鉴于上述情况,我们应该能够通过预处理其中一个向量来计算 和 的点积,然后按时间计算2.
A =(a_0, ..., a_n)
中的卷积。B =(b_0, ..., b_n)
A.B = \sum_j=0 ^ n a_j b_j
O(n log n)
B
B' = (b_n, b_{n-1}, ..., b_1, b_0)
O(n log n)
如果上述推理是正确的,那么这意味着我们可以通过计算时间点乘积来实现两个nxn
矩阵的时间矩阵乘法。O(n^2 log n )
O(n log n)
O(n)
然而,我们所知道的矩阵乘法的最佳运行时间大约是O(n^2.4)
这样,所以这似乎不太可能是真的,这可能意味着步骤 1,2 或 3 是不正确的。
python - 如何使用带有 portaudio 的 numpy 提取低音、中高音
如本例所示 ,如何从输入音频流中提取频率信息(使用 PortAudio)? 我对portaudio和numpy很好奇...
我对 fft 不是 100% 确定,我怎样才能通过 numpy 一个块并取回从 -1.0 到 1.0 的三个值来表示低音、中音和高音?
我不介意这只是针对一个频道,因为我可以理解其中的音频部分,当我看着它们时,这是在我面前游泳的数学:)
matlab - 我的傅里叶变换中的奇怪伪影
我已经在 Matlab 中对时间序列波形执行了 fft(快速傅立叶变换),但实际上在傅立叶变换图中我似乎有一个奇怪的波,尽管这个波看起来像我希望看到的只有在时域。是否有任何编程原因导致这种情况发生?
matlab - 我的傅里叶逆变换尖峰
我正在尝试比较 MATLAB 中的两个数据集。为此,我需要通过对数据进行傅里叶变换来过滤数据集,对其进行过滤,然后对其进行傅里叶逆变换。
当我对数据进行傅里叶逆变换时,我在红色数据集的任一端都得到了一个尖峰(图片显示了第一个尖峰),它在开始时应该接近于零,就像蓝线一样。我正在比较许多数据集,这只是偶尔发生。
我对这个现象有三个问题。首先,可能是什么原因造成的,其次,我该如何补救,第三,它是否会进一步影响时间序列中的数据,或者只是在时间序列的开头和结尾处,如图所示。
任何帮助都会非常感谢。
signal-processing - FFT结果的大小取决于波频率?
我对从 FFT 获得的结果感到困惑,希望能提供任何帮助。
我正在使用 FFTW 3.2.2,但与其他 FFT 实现(在 Java 中)得到了类似的结果。当我对正弦波进行 FFT 时,结果的缩放取决于波的频率 (Hz)——特别是它是否接近整数。当频率接近整数时,结果值的比例非常小,而当频率在整数之间时,结果值会大几个数量级。该图显示了 FFT 结果中尖峰的大小,对应于不同频率的波频率。这是正确的吗??
我检查了 FFT 的逆 FFT 等于原始正弦波乘以样本数,确实如此。FFT 的形状似乎也是正确的。
如果我正在分析单个正弦波,那也不会那么糟糕,因为无论其高度如何,我都可以在 FFT 中寻找尖峰。问题是我想分析正弦波的总和。如果我正在分析 440 Hz 和 523.25 Hz 的正弦波总和,那么只有 523.25 Hz 的尖峰出现。另一个的尖峰非常小,看起来就像噪音。必须有某种方法可以使这项工作发挥作用,因为在 Matlab 中它确实有效——我在两个频率上都得到了类似大小的尖峰。如何更改下面的代码以均衡不同频率的缩放?
macos - OS X 环境中的音频文件 FFT
我希望在 OS X 上对线性 PCM 音频文件(可能有多个音频通道)执行 FFT。最好的方法是什么?
一些消息来源表明 Apple 的 Accelerate Framework 正是我所需要的。如果是这样,我应该如何提取并正确准备浮点数据以用于这些 FFT 函数?
audio - 使用 Core Audio 从 AIFF 中提取浮点数
有没有办法在 OS X 上使用 Core Audio 将 AIFF 文件中的一组帧提取到适合执行 FFT 的 32 位浮点数组中?
matlab - 如何在 MATLAB 中创建 FFT 图?
我有图表 y 轴的数据,我需要对数据执行 FFT 并绘制它。我对 MATLAB 没有太多经验,因此非常感谢任何帮助。