问题标签 [fftw]

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

c++ - FFTW 和 CUFFT 输出的区别

在下面我发布的字符中,我正在比较 FFTW 和 CUFFT 中运行的 IFFT 的结果。

出现这种不同的可能原因是什么?真的有那么多舍入错误吗?

这是相关的代码片段:

ifft 的定义如下:

为了生成图表,我在 fftw_execute W 之后转储了 h_data 和 outdata,W 是我正在处理的图像行的宽度。

看到什么明显的东西了吗?

在此处输入图像描述

0 投票
2 回答
3553 浏览

c++ - CUFFT 的比例因子

我编写了一个简单的测试程序,在其中我正在执行复杂到复杂的 FT,我刚刚生成了一些数据 1..50 并将其插入到数组的每个索引的实部和虚部。

当我做这样的操作时 IFFT(FFT(A)) = A

为了测试它们,我对每个库都得到了不同的结果。

FFTW,我必须将输出除以 len(A) 才能取回原始 A

但是,向前执行此操作然后使用 CUFFT 反向 FFT,看起来我必须除以 (sqrt(2)*50) 才能返回原始数据。

这个额外的平方根因子来自哪里?

根据 CUFFT 文档: CUFFT 执行未归一化的 FFT;也就是说,对输入数据集执行正向 FFT,然后对结果集执行反向 FFT,产生的数据等于按元素数量缩放的输入。通过数据集大小的倒数缩放任一变换,留给用户执行。

提前致谢

0 投票
4 回答
1683 浏览

python - Python:如何在分配中保持变量内存位置?

我对 Python 还是很陌生,所以如果这个问题很愚蠢,请原谅我。我无法通过谷歌找到答案...

我在我的代码中使用 PyFFTW,它有一个规划阶段,您可以在其中将两个变量(源/目标)传递给它,您可以从/到进行转换。然后,当您调用 FFT 时,它将在计划阶段这些变量所在的确切内存空间上运行。因此,对变量所做的任何操作都需要完成,以便这两个变量在内存中的位置不会改变。我找到了对标准数学运算符执行此操作的运算符 、 等*=+=但是在我的程序中,我需要对变量应用一个函数,它应该将它返回到相同的内存位置。这该怎么做?!

我最初以以下方式使用切片:

但是我刚刚意识到,这非常慢(我的代码慢了大约 10%)。那么有人知道该怎么做吗?

非常感谢任何帮助。提前致谢!

0 投票
2 回答
2490 浏览

image-processing - 二维 FFTW 帮助

我目前正在尝试通过fftw_plan_dft_2d计算图像的 fft 。

为了使用这个函数,我将图像数据线性化为一个 in 数组并调用上面提到的函数(详细如下)

func 修改一个复数数组 out,其大小等于原始图像中的像素数。

您知道这是否是计算图像 2D FFT 的正确方法吗?如果是这样,out里面的数据代表什么?IE 数组中的高频值和低频值在哪里?

谢谢, DJ22

0 投票
1 回答
363 浏览

c++ - fftwpp 在卷积后创建一个零填充数组

我使用 fftwpp 将我的数据和卷积核都转换为傅立叶空间,将它们相乘,就像在标量积中一样,然后将它们转换回真实空间。当我第一次运行程序时,它会创建一个完全用零填充的数组。当我再次运行它时,它给了我想要的结果。

在运行它时,wisdom3.txt会创建一个。如果我删除它,程序需要很长时间才能再次创建一个零填充数组。

我的代码有什么问题?

0 投票
2 回答
1641 浏览

windows - 将 FFTW 链接到 Matlab Mex 文件

我正在尝试在 mex 文件中运行 FFTW 代码。这完全是为了开发和测试的目的。经过一番谷歌搜索,我看到其他人试图做类似的事情并遇到了相关的问题,但我没有找到任何解决方案。尝试运行 mex 文件时,Matlab 告诉我:

???使用 ==> chirpTransform.mxCta 时出错 无效的 MEX 文件 '\removed\my\directory\+chirpTransform\mxCta.mexw32':找不到指定的过程。

.

我正在使用带有 MinGW 的 gnumex 来构建 mex 文件,因为 LCC 似乎有一些问题。我曾尝试使用 FFTW 站点 ( http://www.fftw.org/install/windows.html ) 中的 32 位 DLL。我曾尝试在 Matlab 2009b bin 目录中使用 fftwf3.dll。我使用 Msys/MinGW 从源代码构建了 dll。在所有情况下,结果都是相同的。在所有情况下,我都执行了以下操作来生成 lib 文件。

c:\gnumex\mexdlltool.exe -d libfftw3f-3.def -D libfftw3f-3.dll -l libfftw3f.lib --as C:\MinGW\bin\as.exe

我还尝试使用 Visual Studio lib.exe 工具并尝试了各种 mexdlltool 标志。

看来我可以使用 Matlab 的 loadlibrary 功能直接调用 fftwf3-3.dll 中的函数。由于 DLL 似乎不是问题,我尝试构建 fftwf3 的静态版本并将其直接链接到 mex 文件中。我得到了同样的结果!如果我删除 FFTW 代码,则 mex 文件运行良好。在这一点上我几乎放弃了,我很想提出替代的测试方法。

0 投票
0 回答
663 浏览

iphone - 使用 fft iphone 应用程序进行音频处理

可能重复:
用于乐器调谐器的 AurioTouch 和 FFT

我正在开发一个应用程序,我需要在其中对传入的音频进行频谱分析。我是新手,我唯一知道的是我需要使用 FFT。我查看了 aurio touch 应用程序,但无法理解。如果有人有示例代码或简单的方法让我可以做到,请告诉我。提前致谢。

0 投票
4 回答
25087 浏览

c++ - 使用 FFTW 库 C++ 计算 FFT 和 IFFT

我正在尝试计算 FFT,然后是 IFFT,只是为了尝试是否可以返回相同的信号,但我不确定如何完成它。这就是我做 FFT 的方式:

0 投票
1 回答
4392 浏览

java - Java 中最近的 FFTW 包装器

我正在为最新版本的FFTW寻找最小的 Java 包装器。FFTW 网站上列出的包装器要么过期(jfftw-1.2.zip),要么包含太多额外的东西(共享科学工具箱)。谷歌搜索建议JFFTW3,看起来很有希望,但下载链接已损坏(有人有镜子吗?)

对于那些想要纯 Java FFT 库的人来说,JTransforms看起来很不错。我更喜欢使用 FFTW,因为它的速度大约是原来的两倍,并且它可以处理任意尺寸 d > 3。

0 投票
3 回答
14047 浏览

c - 在 C 中使用 fftw.h 计算 fft 和 ifft

大家好,我正在使用 fftw C 库来计算嵌入式系统上某些信号处理应用程序的频谱。但是,在我的项目中,我遇到了一点阻碍。

下面是我编写的一个简单程序,以确保我正确实现了 fftw 功能。基本上我想计算12个数字序列的fft,然后做ifft并再次获得相同的数字序列。如果您安装了 fftw3 和 gcc,则如果您使用以下代码进行编译,则该程序应该可以工作:

目前我的 fft 长度与输入数组的大小相同。

产生以下输出:

所以很明显,IFFT正在产生一些扩大的结果。在此处找到的 fftw 文档中: fftw docs about scaling。它提到了一些缩放,但是我使用的是“r2c”和“c2r”转换,而不是 FFT_FORWARD 和 FFT_BACKWARD。任何见解将不胜感激。