问题标签 [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.

0 投票
1 回答
3493 浏览

c++ - 使用傅里叶描述符逼近形状边界

我试图通过使用傅里叶描述符来近似形状边界。我知道这是可以做到的,因为我在课堂上了解到它并在多个来源中阅读过它。

为了获得 (x,y) 坐标边界的傅里叶描述符,我执行以下操作: 1) 将 (x,y) 坐标转换为 x + iy 形式的复数 2) 将这组新数字输入 1D傅里叶变换 3) 输出是傅里叶描述符

为了近似边界,我简单地移除(设置为零)高频,然后应用傅里叶逆变换,然后将复数转换回 (x,y) 坐标,然后从这组新坐标重建图像。我的项目的目标是根据我设置为零的项的数量来找出我可以近似边界的程度。

我的问题是,每当我将任何频率设置为 0 时,我的输出图像都会非常小,并且会以非常奇怪的模式出现。

我在下面提供了一个示例。输入图像是一个普通的正方形。给出的第一个输出图像是使用所有傅里叶描述符正常重建的图像。请注意,整个边界不存在,因为边界像素的数量被采样为 256,并且我在输出时没有费心连接点。另请注意,输出被翻译到左下角,这是故意的。第二个输出图像是当我只使用前 128 个频率时。

输入图片 http://img19.imageshack.us/my.php?image=square0.bmp

输出图像 1:所有频率 http://img27.imageshack.us/my.php?image=square0normal.bmp

输出图像 2:频率的前半部分 http://img23.imageshack.us/my.php?image=square0out.bmp

有谁知道为什么会发生这种情况?

编辑:第一次把图像放在这里,不知道为什么它们没有出现..这里是链接:
输入图像
输出1
输出2

这里还有一个文档的链接,它有点讨论这个问题,它从第 5 页的末尾开始。

0 投票
2 回答
4224 浏览

numpy - 有没有办法降低 scipy/numpy 精度以减少内存消耗?

在我的 64 位 Debian/Lenny 系统(4GByte RAM + 4GByte 交换分区)上,我可以成功地做到:

但是 f 是 anp.complex128的内存消耗是令人震惊的,我不能对结果做更多​​的事情(例如调制系数然后f=ifftn(f))而没有MemoryError回溯。

与其安装更多的 RAM 和/或扩展我的交换分区,是否有某种方法可以控制 scipy/numpy “默认精度”并让它计算一个 complex64 数组?

我知道我可以在之后使用f=array(f,dtype=np.complex64); 我希望它实际上以 32 位精度和一半的内存进行 FFT 工作。

0 投票
4 回答
856 浏览

math - 了解离散傅里叶变换

我有一个关于离散傅里叶变换的小问题。如果我理解正确,那么我们所做的就是将多项式转换为其点值表示,其中 n 点表示多项式的 n-1 次幂。但是为什么我们必须在统一的第 n 个根上对其进行评估呢?任何其他 n 点不会唯一标识这个多项式并且更简单吗?

0 投票
2 回答
4120 浏览

fft - 快速傅里叶变换 - 多项式相乘?

我只是不明白如何对两个多项式(例如 X^2+1 和 X+1)执行 FFT ......有人可以和我一起一步一步地完成这个过程吗?

非常感谢

0 投票
2 回答
3040 浏览

math - 使用 Vandermonde 矩阵的快速傅立叶变换 - 系数评估?

假设我正在尝试评估多项式:

使用快速傅里叶变换方法评估系数。现在我可以使用 co-effcient 作为快速傅立叶变换的输入将其更改为矩阵/向量形式:

所以:

这是通过使用系数值来完成的,例如 1 = 1、0x^1 = 0、X^2 = 1 等等

现在我们到了我完全困惑的地方。我打算使用范德蒙德矩阵:范德蒙德矩阵〜维基使用矩阵将这些值评估为 FFT 形式:

的输出

现在这就是我不太明白的步骤,我们如何使用该矩阵得到(2,0,2,0)?

0 投票
4 回答
2484 浏览

math - 对人类听觉的 FFT 数据进行归一化

音频的典型 FFT 看起来与此非常相似,大部分动作发生在最左侧

http://www.flight404.com/blog/images/fft.jpg

他将它乘以一个部分正弦波以使其达到底部,但文章对这部分并不太具体。它也似乎是对数据集的“足够好”修改,而不是基于某些属性的修改。我知道人类的听觉更适合更高的频率,因此,大多数音乐都会放大低音和衰减高音,这样我们听起来两者的强度相对相等。

我的问题是需要对 FFT 进行哪些修改以补偿此标准衰减?

编辑 ::

http://en.wikipedia.org/wiki/Equal-loudness_contour

我偶然发现了这篇文章,我认为这可能是前进的方向,但仍然可能需要抵消 FFT 的某些特性。

0 投票
4 回答
2039 浏览

wav - 在另一个 WAV 中找到一个 WAV 样本的出现?

如果已知确切的样本存在于 wav 中的某处(但可能与其他声音混合),则 FFT 是否有可能在较长的 wav 中找到一个小 wav 样本的出现?

编辑

(在收到两个回复后):如果我有一个包含所有已知声音的库,可以在较大的 WAV 中,并希望在该 WAV 中找到它们中的每一个的出现,该怎么办?换句话说,我知道可以混入大 wav 的所有可能的声音,并希望找到它们的出现?

0 投票
7 回答
7444 浏览

c - 数组上的就地位反转随机播放

对于 FFT 函数,我需要以位反转的方式排列或打乱数组中的元素。这是 FFT 的一项常见任务,因为两种大小的 FFT 函数的大多数功能要么期望或以位反转的方式返回它们的数据。

例如,假设数组有 256 个元素,我想用它的位反转模式交换每个元素。这里有两个例子(二进制):

等等。

知道如何快速且更重要地做到这一点:就地?

我已经有一个执行此交换的功能。写一篇不难。由于这是 DSP 中如此常见的操作,我觉得有比我非常幼稚的循环更聪明的方法来做到这一点。

有问题的语言是 C,但任何语言都可以。

0 投票
4 回答
4919 浏览

python - 裁剪 FFT 矩阵

音频处理对我来说很新鲜。目前使用 Python Numpy 处理波形文件。计算 FFT 矩阵后,我得到了不存在频率的噪声功率值。我对可视化数据感兴趣,准确性不是一个高优先级。是否有一种安全的方法来计算裁剪值以删除这些值,或者我应该使用每个样本集的所有 FFT 矩阵来得出一个平均数?

问候

编辑:

这是使用 Goldwave 创建的包含 500hz(淡出)+ 200hz 正弦波的合成波文件的非对数刻度图。

0 投票
3 回答
19796 浏览

java - 在 Java 中使用傅里叶变换处理音频数据

我正在尝试处理音频数据。我正在使用 Java。我已将音频数据提取到一个数组中。现在我应该将 N 个数据样本传递给一个计算离散傅里叶变换(或快速傅里叶变换,效率更高)的函数。我已经阅读了文档,但我越来越困惑。我要计算的是幅度谱(|X(k)|)。谁能帮我?谢谢