问题标签 [frequency-analysis]

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.

0 投票
1 回答
411 浏览

audio - 我是否尝试使用 FFT 正确识别输入信号?

我正在尝试实现 FFT,我想问一下我所做的是否正确。我将 GSL(GNU 科学图书馆)用于 FFT 函数。我一直在阅读有关 FFT 的教程,但我仍然想请人验证我是否朝着正确的方向前进。

这是我通过网络材料提出的方法:

有人可以解释如何选择 FFT 点的数量吗?或者它是否重要。我可能忽略了它,但我似乎找不到选择这个数字的方法。
编辑:我认为命名这个 FFT 窗口更合适,因为你在样本上滑动一个窗口 1024 点以找到频率。

运行 FFT 后,我有另一个幅度列表,并且基于它们所在的 bin,即正在检测的频率,对吗?所以为了找到生成信号的频率,我想找到最高峰?

这种方法是否在获取输入信号频率的正确轨道上?

0 投票
0 回答
494 浏览

android - 如何计算频率和检测压缩(mp3)音频文件的音高?- 安卓

我在 使用 Audiorecord 类录制音频时遇到问题,因为返回的数据始终为零(读取方法不录制音频)。

所以,我想播放压缩音频并读取它以进行处理或解压缩。怎么可能?我想计算音频文件的频率。我真的需要你的帮助。

0 投票
1 回答
111 浏览

signal-processing - 在分析附加信号时我应该寻找什么?

我正在寻找分析和比较以下“信号”:

(编辑:这里有更好的效果图:振荡好,这里:振荡不好

神经激活好 神经激活不好

你看到的是一种人工神经网络的神经元激活图,它是随时间绘制的。图中的每一行都是神经元随时间的激活,其值可以在 -1 和 1 之间。

在第一个情节中,活动是稳定和一致的,而第二个则体现了更混乱的活动(因为缺少更好的术语)——某种破坏性干扰似乎经常发生。

无论如何,我想做一些“聪明”的分析,但由于信号分析真的不是我的强项,所以我想在这里寻求一些建议......

编辑:让我澄清一下。最后,我想描述数据的特征。例如,这可能涉及精确定位每个图中包含的各个信号之间的相关性。我想测量“规律性”或数据不变性:在上面的例子中,上图比下图更规律。我想因此我可以计算每个信号的方差并将其作为衡量标准;但我想知道一些更全面的信号处理技术是否更适合(我不确定)。事实上,我什至不确定信号处理是否是我现在真正想要的。也许某种小波或ft分析......

对于那些感兴趣的人,我正在研究蠕虫运动的计算建模。

0 投票
1 回答
9392 浏览

python - 使用 FFT Python 从音频信号中去除背景噪声

我目前正在大学做一个项目,我正在使用 python 区分不同乐器演奏相同音高的音符。

我使用连接到计算机的麦克风在不同的乐器上录制了各种音符。

我还记录了房间的背景。

到目前为止,我在不同仪器上绘制了不同音符的图,在 y 轴上,我的振幅以 dB 为单位:20*log10(|FFT(signal)|)

在 x 轴上,我有 DFT 采样频率

一些谐波峰值足够小(或背景足够大),以至于噪声成为一个因素 - (不能发布图像,因为我是菜鸟!)我的问题是计算高度的不确定性水平考虑背景噪声时出现峰值。

我的问题是:

那么,在考虑背景噪声时,如何计算峰高(它们的相对谐波幅度)的不确定性水平。

一些想法:

在对什么是谐波峰值和什么可归因于噪声进行分类时,我应该使用什么 dB 阈值(我应该将低于最大背景(~28000dB)或平均值(~15000)或可能是这些值之一的两倍的峰值打折)?

此外,考虑到背景引入的噪声,从我的仪器记录的 FFT bin n 中减去背景的 FFT bin n 中的值是否合法?

我也看过这篇文章,如何在 MATLAB 中使用 fft 从录制的声音中去除噪音?,那里似乎有很大不同的意见。

如果它是相关的,我可以发布我的代码片段——尽管在同学剽窃的情况下放得太多。

非常感谢对项目有帮助的文献链接。(仍处于我以我能想到的各种方式绘制数据以寻找每种仪器的区别属性的阶段)。

提前致谢

0 投票
2 回答
1467 浏览

ruby - 如何解释音频编码的二进制数据?

我已经构建了一个将二进制数据编码为声音的小程序。例如以下二进制输入:

会产生这样的“声音”:

其中每个字符代表一个恒定的时间单位。#代表 880 赫兹正弦波,用于确定传输的开始和结束,.代表静音,代表零,S代表 440 赫兹正弦波,代表 1。显然,中间的部分在实践中要长得多。

我的问题的本质是:我怎样才能反转这个操作?

声音文件通过简单的声音回放和录音传输给接收者。这意味着我不会尝试解码很容易的原始声音文件。

显然,我必须根据频率分析记录的数据。但是怎么做?我读过一些关于傅立叶变换的文章,但我在这里很迷茫。

我不知道从哪里开始,但我知道这不是微不足道的,可能需要相当多的信号处理知识。有人可以指出我正确的方向吗?

顺便说一句:我在 Ruby 中执行此操作(我知道,它很慢 - 这只是一个概念证明)但问题本身不是特定于编程语言的,因此非常欢迎任何答案。

0 投票
1 回答
425 浏览

matlab - 预兆图差异

我正在绘制以下内容

我希望 semilogx 图会返回与“bode”相同的图。但是,情况似乎并非如此。有谁知道这里出了什么问题?

0 投票
2 回答
1150 浏览

matlab - 我是否以正确的方式使用傅立叶变换?

我想知道我是否以正确的方式在 MATLAB 中使用傅立叶变换。我想要一首歌中频率的所有平均幅度。出于测试目的,我使用了贝多芬“为 Elise”的免费 mp3 下载,我使用Audacity将其转换为 8 kHz 单声道文件。

我的 MATLAB 代码如下:

然后输出如下所示: 在此处输入图像描述

  1. 有人可以告诉我我的代码是否正确吗?我特别想知道 0 附近的峰值。
  2. 为了规范化,我必须除以NFFTorlength(allSamples)吗?
  3. 对我来说,这看起来并不像条形图,但我想这是由于我正在绘制的许多值?

感谢您的任何提示!

0 投票
1 回答
1777 浏览

iphone - 如何检测aurioTouch项目中最低和最高频率的值

可能重复:
如何从 FFT 结果中获取频率

我正在研究aurioTouch2示例代码。在绘图视图函数中,总是调用一个函数来计算 fft 数据,因此我们可以计算不同频率的功率。

问题是如何获得我在屏幕上显示的各种频率?我的意思是,我有不同音频频率的电源阵列。我怎么能理解,例如最低频率的值是多少?

更新以表明我的观点:

我知道,最低阈值(最低频率)是 outFFTData[0],最高的是 outFFTData[last]。但我不知道,例如,数字中的频率与 outFFTData[0] 相关。outFFTData[0] 是否与 16Hz 相关;outFFTData[last] 是否与 22 kHz 相关?

现在我认为,outFFTData[0] 与人能听到的最低音频频率有关;和 outFFTData[last] 与人可以听到的最高音频频率有关。

我错了吗?

更新 2

我在这里查看了Paul R代码。它确实显示了几乎所有内容。但是,如果我错了,请纠正我:

在这段代码中:

在这段代码 mFFTLength = mAudioBufferLen / 2;中,我认为,频率的最大值将在 mDspSplitComplex 中,index = mFFTLength - 1 或者我错了,频率的最大值将在 mDspSplitComplex 中index = mFFTLength / 2 - 1

Update 3

I have very simular issue Why do we use only the first buffer in aurioTouch project. May be anyone knows the answer.

0 投票
1 回答
10833 浏览

matlab - 在 Matlab 中使用 FFT 进行频移

我正在使用跳频实现 BFSK 调制和解调,我需要使用 Matlab 测试我的结果。我从 BFSK 程序得到的输出是一个正弦值数组,对应于不同位的载波信号。这些信号是以 2.51KHz 为中心的通带信号,其周围的带宽为 4KHz。但要测试解调步骤,我需要将信号转换为基带。所以我需要将我的输出信号集中在 0Hz。

我知道创建一个 2.51KHz 的复杂信号并在时域中将其相乘就可​​以完成这项工作。但是有没有什么方法可以用fft()matlab中的函数来改变信号的中心频率,然后取一个ifft()信号来生成基带信号。

谢谢,安舒

0 投票
4 回答
40756 浏览

android - 如何在android中计算声音频率?

我想开发应用程序来计算 Android 中的声音频率。Android 设备将从麦克风获取声音(即外部声音),并且我在应用程序中有一个彩色背景屏幕。关于声音频率的变化,我必须改变屏幕的背景颜色。

所以我的问题是“我怎样才能获得声音频率”?

有没有可用的android API?

请帮我解决这个问题。