问题标签 [dft]

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 回答
3227 浏览

signal-processing - DSP - 使用 DFT 过滤频率

我正在尝试实现基于 DFT 的 8 波段均衡器,其唯一目的是学习。为了证明我的 DFT 实现有效,我输入了一个音频信号,对其进行了分析,然后再次重新合成它,而不对频谱进行任何修改。到现在为止还挺好。

我正在使用所谓的“计算 DFT 的标准方法”,即相关性。此方法计算长度为 N/2 + 1 个样本的实部和虚部。为了衰减我正在做的频率:

其中“k”是 0 到 N/2 范围内的索引,但我在重新合成后得到的是轻微失真的信号,尤其是在低频时。

输入信号采样率为 44.1 khz,由于我只想要一个 8 波段均衡器,我一次输入 DFT 16 个样本,因此我有 8 个频率箱可供使用。

有人可以告诉我我做错了什么吗?我试图在互联网上找到有关此主题的信息,但找不到任何信息。

提前致谢。

0 投票
4 回答
26093 浏览

filtering - DSP - 通过 FFT 在频域中进行滤波

我一直在玩 FFT 的 Exocortex 实现,但我遇到了一些问题。

每当我在调用 iFFT 之前修改频率箱的幅度时,生成的信号都会包含一些咔嗒声和爆裂声,尤其是当信号中存在低频时(如鼓或贝司)。但是,如果我将所有 bin 衰减相同的因子,则不会发生这种情况。

让我举一个 4-sample FFT 的输出缓冲区的例子:

输出由成对的浮点数组成,每个浮点数代表单个 bin 的实部和虚部。因此,bin 0(数组索引 0、1)将代表 DC 频率的实部和虚部。如您所见,bin 1 和 3 都具有相同的值(除了 Im 部分的符号),所以我猜 bin 3 是第一个负频率,最后索引 (4, 5) 将是最后一个正频率仓。

然后衰减频率仓 1,这就是我所做的:

对于实际测试,我使用的是 1024 长度的 FFT,并且我总是提供所有样本,因此不需要 0 填充。

显然我做错了什么,但不知道是什么。

我不想使用 FFT 输出作为生成一组 FIR 系数的手段,因为我正在尝试实现一个非常基本的动态均衡器。

在频域中过滤的正确方法是什么?我错过了什么?

另外,真的需要衰减负频率吗?我已经看到了一个 FFT 实现,其中 neg。频率值在合成之前归零。

提前致谢。

0 投票
1 回答
4195 浏览

fft - 任何经验法则如何在手动调整时平滑 FFT 频谱以防止伪影?

我有一个 FFT 幅度谱,我想从中创建一个滤波器,选择性地通过周期性噪声源(例如正弦波杂散)并将与随机背景噪声相关的频率区间归零。我知道一旦这个过滤器IFFT回到时域,频率域中的急剧转换会产生振铃伪影......所以我想知道是否有任何经验法则如何平滑这种过滤器中的转换以避免这种情况铃声。

例如,如果 FFT 有 1M 频率区间,并且有五个杂散从背景噪声基底中伸出,我想将除与五个杂散中的每一个相关的峰值区间之外的所有区间归零。问题是如何处理相邻的支线箱以防止时域中的伪影。例如,是否应将支线箱每一侧的箱设置为 50% 幅度?是否应该在支线箱的两侧使用两个箱(最近的一个在 50%,下一个在 25% 等)?任何想法都非常感谢。谢谢!

0 投票
3 回答
7634 浏览

matlab - 在 MATLAB 中查找 2d 脉冲峰值

在二维矩阵中找到脉冲峰值(狄拉克增量)的最佳方法是什么。

更具体地说,我想找到给定图像的谐波频率,因此我需要在图像绝对值 DFT 中找到脉冲峰值。

我想过使用 findpeaks 但没有 2d 版本。我还看到了有关使用 imdilate 和/或 imextendedmax 查找普通峰值的较早帖子,但那些在 2d 矩阵中找到所有峰值,而我只对脉冲峰值感兴趣。我相信 DSP 人对此有一个共同的秘诀......

请帮忙,

谢谢

0 投票
3 回答
2713 浏览

c++ - DFT算法和卷积。怎么了?

谁能说,有什么问题???

也许我不明白这个算法的实现细节......但我找不到它)))

另外,我需要计算卷积。

但我找不到测试示例。

更新

}

0 投票
1 回答
331 浏览

java - 任何人都可以帮助解决这个堆栈/列表问题吗?

我一直在阅读一本关于 java 的书,并且必须表示有向图、节点之间的距离等。

这是我所拥有的(来自以前的出版物)

但是我收到以下错误:

与此有关(第一个错误第一行,第二个错误第二行):

有任何想法吗?非常感谢!

0 投票
2 回答
3309 浏览

java - 任何人都可以帮助解决这个 hasNextLine() 错误吗?

编译此类时遇到问题。我正在阅读一本关于 java 的书,这是其中的一个练习,它们提供了大部分代码。所以这基本上是本书提供的一个股票类。

现在,我遇到的问题是在编译时出现此错误:

与此相关:

现在我认为 hasNextLine() 是 Scanner 库的一部分,它是在 StdIn 类中导入的,所以它不应该丢失..?

导入 java.util.Scanner;

如果有帮助,这是类 Graph 的完整代码(发生错误的地方)!

非常感谢!

这是 StdIn 类,如果有帮助的话!

如果需要,这里是 In 类:(这有点冗长,抱歉)

0 投票
3 回答
32292 浏览

c++ - Fast Fourier Transform

I need to multiply two polynomials each having small integral coefficients. I need a fast FFT routine in C/C++ which can convolve them. I have seen several libraries but they seem to be too large spread over multiple files. What is important is I need code which is not too long and can be very easily used and compiled in a single .c/.cpp file.

  1. FFT should be optimized for real inputs at least if not small integers.
  2. Radix 4 implementation if available would be fine too.
  3. Compiling it should take no special compilation flags as compilation of program has to be done in external environment which I can't control.

One that very well matches my needs is here. But I need something twice as fast.

0 投票
2 回答
9719 浏览

android - 使用 Jtransform 的 DoubleFFT_1D() for android 计算 DFT

我一直在到处寻找一种可靠的方法来计算android SDK(通过eclipse IDE)中的本机函数接收到的音频字节流的FFT。我遇到了 libgdx fft 和 Jtransform。Jtransform 在这里找到 JTransform 。我已将它们全部下载,并将 .jar 文件添加到项目根目录中创建的 libs 文件夹中。然后,我通过项目属性 > java 构建路径 > 库将项目链接到新的 .jar 文件。

我的 src java 文件看起来像这样试图使用 Jtransform。

在这个例子中,我只使用了 Jtransform 包,但是对于 lingdx 包,我遇到了同样的编译错误。编译器说 DoubleFFT_1D 和 complexForward 未定义。所以我缺少一些东西,比如没有正确链接我的库,我不确定。任何帮助将不胜感激。我的意思是在 onCreate 之前声明一个 DoubleFFT_1D 和 complexForward 的实例吗?

我知道这是一个菜鸟问题,但我是面向对象语言的新手,并且在旅途中学习 java。谢谢 :)

0 投票
1 回答
1748 浏览

dft - 如何从 DFT 中选择频率

假设一个数字序列(波状数据)。然后我执行 DFT(或 FFT)变换。我想要实现的下一步是找到与数据中包含的真实频率相对应的频率。众所周知,DFT 输出具有实部和虚部 a[i] 和 b[i]。如果我们看一下频谱 (sqrt(a[i]^2+b[i]^2) 那么其中的最大值对应于数据中包含的频率。问题是如何从 DFT 中找到所有频率?当有许多其他峰可能被错误地选择时,就会出现问题。