问题标签 [spectrum]

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 投票
4 回答
12667 浏览

transform - 如何从傅里叶变换中绘制频谱

我想绘制音乐文件的频谱(就像他们在 Audacity 中所做的那样)。因此,我想要 x 轴上的赫兹频率和 y 轴上的幅度(或分贝)。

我一次将歌曲(大约 2000 万个样本)分成 4096 个样本块。这些块将产生 2049 (N/2 + 1) 个复数(正弦和余弦 -> 实部和虚部)。所以现在我有这数千个单独的 2049 阵列,我该如何组合它们?

假设我做了 5000 次 FFT,得到 5000 个 2049 复数数组。我是否将 5000 个数组的所有值相加,然后取组合 2049 个数组的大小?然后我是否使用歌曲采样率 / 2(例如:22050 用于 44100hz 文件)来调整 x 轴?

任何信息将被appriciated

0 投票
2 回答
16017 浏览

c - FFT bin 宽度说明

我正在为 8 位 Atmega32 开发一个频谱分析仪,它可以输出到 LCD 显示器上。最大采样频率为 40kHz,因此最大频率为 20kHz,遵循 fs > 2B。目前,我正在内部生成一个信号,然后对该信号应用 FFT 并在 LCD 上查看频谱。

请注意,这是用伪代码编写的:

输出频谱目前有 FFT_N/2 = 32 个 bin,每个代表 1Hz。因此,我的频谱目前代表的最高频率(我已经测试过) - 32Hz。如何增加这些 bin 的“频率宽度”,以便每个 bin 代表 625Hz?请记住,我不能将 FFT_N 的大小增加到 64~128 以上,因为我有内存限制。

0 投票
1 回答
1020 浏览

python - Cython 的功率谱

我正在尝试使用 Cython 优化我的代码。它正在做一个功率谱,而不是使用 FFT,因为这是我们在课堂上被告知要做的。我尝试在 Cython 中编写代码,但没有发现任何区别。这是我的代码

时间和数据通过 numpy.loadtxt 加载并发送到此函数。当我做

.html 文件很黄,所以效率不高。尤其是整个 for 循环以及计算功率和返回所有内容。

我曾尝试阅读 Cython 的官方指南,但由于我从未用 C 编写过代码,因此有点难以理解。

非常感谢所有帮助:)

0 投票
1 回答
845 浏览

java - 在java中查找二维矩阵中的峰值

我花了几天时间寻找解决问题的方法。我在一个大矩阵(大约 1400 x 2700)中找到峰值时遇到问题。我需要找到主峰和两个较小的峰 - 换句话说,图片中的三个最大的峰。该矩阵是一个拟合图像的两个 FFT 的结果。主要问题是找到主峰的大小。我设法找到了中心峰的最大值,但由于噪音,我找不到它的尽头。有没有人有任何想法或代码示例我可以查看以找到解决方案?

更新:还有一个相关的问题:如何有效地确定矩阵中的阈值(噪声)?如果我能成功地做到这一点,找到峰值会很容易吗?

0 投票
1 回答
270 浏览

java - 功率谱的自相关

有谁知道如何实现一张图像的功率谱的自相关?我尝试使用:

但它不工作?你知道为什么或其他方式吗?

0 投票
1 回答
306 浏览

android - 从远程 url 播放音频文件时如何生成音频频谱?

我有一个屏幕,我在其中创建了我的自定义音频播放器,我在其中播放从 web 服务接收到的音频文件。我成功地完成了这一部分。现在,根据音频文件,我想生成该音频文件的音频频谱。我在网上搜索并找到了一些与库相关的 FFT。但我不知道如何将它集成到我的代码中,所以我需要一些示例或指导来说明如何实现它?

任何帮助,将不胜感激 :-)

提前致谢 .....

0 投票
1 回答
4234 浏览

matlab - 在matlab中绘制时间与频率

我正在尝试找到一种方法来创建显示音频波及其时频数据(x 轴上的时间,y 轴上的波能量和频率数据)的图表。我有这段代码可以在两个单独的图上执行此操作:

现在我需要两件事的帮助。

首先,我如何获得以秒为单位的频谱图时间?现在它以 0-340 的 x 范围(标记为“时间”)绘制图形,我知道剪辑大约有 40 秒长(另一个图正确显示了这一点)。

其次,我如何将它们绘制在一起?我知道我可以从频谱图中得到一个矩阵,但是我从那个矩阵中得到哪个数组以及如何将它的时间范围转换为秒?

编辑:

第一个问题解决了,但是图表仍然在做一些奇怪的事情——它们都输出了大约 40 秒的数据,但是图表的范围和数据的偏移量不同。频谱图从 0 秒到 40 秒,但前 0.5 秒没有数据,波形图从 0 秒到 45 秒,最后 5 秒没有数据。如何使范围和偏移量相同?

编辑2:

我只需要axis tight;在两个子图上使用

0 投票
1 回答
770 浏览

audio - jTransforms DoubleFFT_1D 前两个值

文件说

公共无效realForward(双[]一):

计算真实数据的一维前向 DFT,将结果保存在 . 输出数据的物理布局如下:

如果 n 是偶数

a[2*k] = Re[k], 0<=k<n/2

a[2*k+1] = Im[k], 0<k<n/2

a[1] = Re[n/2]

来自这个线程:来自 jTransforms DoubleFFT_1D 的功率谱密度

我发现第一个元素是直流元素,第二个对应于最后一个。丢弃前两个而不是给他们特殊待遇会更方便。丢弃直流元件可以吗?最后一个?

如果不行,我应该计算 DC 元件的幅度吗?最后一个没有对应虚值的元素呢?

像那样?幅度 = Math.sqrt(Re[n/2]*Re[n/2]);

0 投票
0 回答
696 浏览

curve-fitting - von Karman 曲线拟合到现场测量的风谱

因此,对于这个风监测项目,我从几个 3d 声波风速计获取数据,特别是 2 RMYoung 81000。数据输出是数字化的,采样频率为 10Hz,周期为 10 分钟。经过所有的预处理(坐标旋转,趋势去除......),我得到了 3 个正交时间序列的湍流数据。现在,我正在使用 2 小时测量的固定数据,窗口为 4096 个点,重叠率为 50%,以获得所有三个方向的频谱。获得频谱后,我应用对数频率平滑算法,该算法以对数间隔对获得的频谱进行平均。

我有两个问题:

  1. 我从测量中获得的频谱显示出最高频率的明显下降趋势,如附图所示。我想知道这种能量损失是否与声波风速计的内部过滤器有关?或者还有什么?有没有办法补偿这种损失或更好地考虑频谱直到“中断频率”?

http://i.stack.imgur.com/B11uP.png

  1. 当应用曲线拟合算法根据 von Karman 方程确定积分长度尺度时,正确的程序是什么:曲线拟合原始数据,这会给更高频率的数据点更多的权重?或者使用对数频率平滑数据来近似冯卡曼方程,对数尺度中的数据给予相同的权重?在某些情况下,我使用这两种方法获得了非常不同的积分长度尺度估计值(例如:原始 -> Lu=113.16 Lv=42.68 Lw=9.23;频率平滑 -> Lu=148.60 Lv=30.91 Lw=14.13)。

使用对数频率平滑和原始数据进行曲线拟合:http: //i.imgur.com/VL2cf.png

如果有不清楚的地方,请告诉我。我在这个领域相对较新,我可能在我的方法中犯了一些错误,所以如果你能给我一些建议或提示,那就太棒了。

0 投票
0 回答
2898 浏览

c++ - 在图像光谱上应用陷波滤波器(OpenCV)

如何使用 OpenCV 2.4 和 C++ 在图像光谱上应用陷波滤波器?我想计算图像的 DFT,抑制某些频率并计算逆 dft。谁能告诉我一些示例代码如何在频率域中应用陷波滤波器?

编辑:

这是我尝试过的,但是频谱的象限不是按顺序排列的,因此频谱的原点不是图像的中心。这让我很难确定要抑制的频率。当交换象限以使原点为中心时,逆 DFT 显示错误的结果。谁能告诉我如何用交换的象限做逆 dft?

我不明白频率图像 filter1 和 filter2 中的列数(参见代码)。如果我在 for 循环中使用 filter1.cols 作为 u,我不会访问图像的右边框。Filter1 和 filter2 似乎有大约。5000 列,但源图像的分辨率为 1280x1024(灰度)。对此有什么想法吗?

对我的代码有任何进一步的评论吗?