问题标签 [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.
c++ - FFTW 和 CUFFT 输出的区别
在下面我发布的字符中,我正在比较 FFTW 和 CUFFT 中运行的 IFFT 的结果。
出现这种不同的可能原因是什么?真的有那么多舍入错误吗?
这是相关的代码片段:
ifft 的定义如下:
为了生成图表,我在 fftw_execute W 之后转储了 h_data 和 outdata,W 是我正在处理的图像行的宽度。
看到什么明显的东西了吗?
c++ - CUFFT 的比例因子
我编写了一个简单的测试程序,在其中我正在执行复杂到复杂的 FT,我刚刚生成了一些数据 1..50 并将其插入到数组的每个索引的实部和虚部。
当我做这样的操作时 IFFT(FFT(A)) = A
为了测试它们,我对每个库都得到了不同的结果。
FFTW,我必须将输出除以 len(A) 才能取回原始 A
但是,向前执行此操作然后使用 CUFFT 反向 FFT,看起来我必须除以 (sqrt(2)*50) 才能返回原始数据。
这个额外的平方根因子来自哪里?
根据 CUFFT 文档: CUFFT 执行未归一化的 FFT;也就是说,对输入数据集执行正向 FFT,然后对结果集执行反向 FFT,产生的数据等于按元素数量缩放的输入。通过数据集大小的倒数缩放任一变换,留给用户执行。
提前致谢
python - Python:如何在分配中保持变量内存位置?
我对 Python 还是很陌生,所以如果这个问题很愚蠢,请原谅我。我无法通过谷歌找到答案...
我在我的代码中使用 PyFFTW,它有一个规划阶段,您可以在其中将两个变量(源/目标)传递给它,您可以从/到进行转换。然后,当您调用 FFT 时,它将在计划阶段这些变量所在的确切内存空间上运行。因此,对变量所做的任何操作都需要完成,以便这两个变量在内存中的位置不会改变。我找到了对标准数学运算符执行此操作的运算符 、 等*=
。+=
但是在我的程序中,我需要对变量应用一个函数,它应该将它返回到相同的内存位置。这该怎么做?!
我最初以以下方式使用切片:
但是我刚刚意识到,这非常慢(我的代码慢了大约 10%)。那么有人知道该怎么做吗?
非常感谢任何帮助。提前致谢!
image-processing - 二维 FFTW 帮助
我目前正在尝试通过fftw_plan_dft_2d计算图像的 fft 。
为了使用这个函数,我将图像数据线性化为一个 in 数组并调用上面提到的函数(详细如下)
func 修改一个复数数组 out,其大小等于原始图像中的像素数。
您知道这是否是计算图像 2D FFT 的正确方法吗?如果是这样,out里面的数据代表什么?IE 数组中的高频值和低频值在哪里?
谢谢, DJ22
c++ - fftwpp 在卷积后创建一个零填充数组
我使用 fftwpp 将我的数据和卷积核都转换为傅立叶空间,将它们相乘,就像在标量积中一样,然后将它们转换回真实空间。当我第一次运行程序时,它会创建一个完全用零填充的数组。当我再次运行它时,它给了我想要的结果。
在运行它时,wisdom3.txt
会创建一个。如果我删除它,程序需要很长时间才能再次创建一个零填充数组。
我的代码有什么问题?
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 文件运行良好。在这一点上我几乎放弃了,我很想提出替代的测试方法。
iphone - 使用 fft iphone 应用程序进行音频处理
我正在开发一个应用程序,我需要在其中对传入的音频进行频谱分析。我是新手,我唯一知道的是我需要使用 FFT。我查看了 aurio touch 应用程序,但无法理解。如果有人有示例代码或简单的方法让我可以做到,请告诉我。提前致谢。
c++ - 使用 FFTW 库 C++ 计算 FFT 和 IFFT
我正在尝试计算 FFT,然后是 IFFT,只是为了尝试是否可以返回相同的信号,但我不确定如何完成它。这就是我做 FFT 的方式:
java - Java 中最近的 FFTW 包装器
我正在为最新版本的FFTW寻找最小的 Java 包装器。FFTW 网站上列出的包装器要么过期(jfftw-1.2.zip),要么包含太多额外的东西(共享科学工具箱)。谷歌搜索建议JFFTW3,看起来很有希望,但下载链接已损坏(有人有镜子吗?)
对于那些想要纯 Java FFT 库的人来说,JTransforms看起来很不错。我更喜欢使用 FFTW,因为它的速度大约是原来的两倍,并且它可以处理任意尺寸 d > 3。
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。任何见解将不胜感激。