问题标签 [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)
我正在使用 FFTW(一个 FFT 库)的线程版本来尝试加速双 CPU 机器上的一些代码。这是只有 1 个线程的时间输出:
这里有 2 个线程:
用户时间和 CPU 负载百分比似乎表明它的线程非常有效,但是挂钟时间(这是我真正关心的)告诉我(我认为)处理线程需要大约 28 秒的额外时间. 这是描述情况的准确方式吗?如果是这样,这是相当正常的,还是我可能配置不正确?谢谢你的光。
c++ - 图像的 FFT
我有一个关于 fftw 的任务,我正在尝试编写一个小程序来创建图像的 fft。我正在使用 CImg 来读取和写入图像。但我得到的只是一张带有单个白点的深色图像:(
我很可能以错误的方式做这件事,如果有人能解释应该如何做,我将不胜感激。我不需要代码,我只需要知道执行此操作的正确方法是什么。
这是我的代码:
visual-c++ - 要在 Visual C++ 2005 中启动调试模式,是否必须提供调试版本链接库?
我对 Visual C++ 2005 的调试模式有一个恼人的问题。我的科学程序使用 FFTW3 库,它是一个 FFT 变换计算库。遗憾的是,FFTW3 库没有官方的 VC++ 预编译版本。更可悲的是,使用 VC++ 2005 从源代码编译 FFTW3 非常困难。FFTW3官网提供了一个使用MinGW GCC构建的预编译DLL包,处于发布模式。
我可以在调试和发布模式下将我的程序与 Visual C++ 2005 中的这些 MinGW 版本 DLL 链接起来。但是我的程序在开始运行后立即退出,所以我想一步一步调试我的程序。如果我在 Visual C++ 中按下“调试”按钮,就会出现问题:
'minifun.exe': Loaded 'D:\cygwin\home\minifan\debug\libfftw3f-3.dll', Binary was not built with debug information.
我的问题是我是否必须向 VC++ 提供调试版本 FFTW3 才能启动调试模式?有什么方法可以避免吗?
问题是我无法轻松获得调试版本和 VC++ 编译的 FFTW3 库。
很抱歉这么长的描述。我感谢你们的任何意见。非常感谢!
约翰链
multithreading - 共享内存计算机上的多线程 FFTW 3.1.2
我使用带有 Fortran 的FFTW 3.1.2 来执行实数到复数和复数到实数的 FFT。它在一个线程上完美运行。
不幸的是,当我在 32 CPU 共享内存计算机上使用多线程 FFTW 时遇到了一些问题。我有两个计划,一个用于 9 个实数到复数 FFT,一个用于 9 个复数到实数 FFT(每个实数场的大小:512*512)。我使用 Fortran 并编译(使用ifort
)链接到以下库的代码:
程序似乎编译正确,函数sfftw_init_threads
返回一个非零整数值,通常为 65527。
然而,即使程序运行完美,使用 2 个或更多线程也比使用 1 个要慢。一条top
命令显示奇怪的 CPU 负载大于 100%(并且比 n_threads*100 大得多)。一条htop
命令显示一个处理器(假设 1 号处理器)正在以 100% 的程序负载运行,而所有其他处理器(包括 1 号处理器)都在以 0% 负载、0% 内存运行同一程序和 0 时间。
如果有人知道这里发生了什么......非常感谢!
c - 如何让 FFTW 在 Windows XP 上的 Eclipse CDT 中工作
我试图让西方最快的傅立叶变换与日食合作。我从网站上下载了它(它是一个名为 fftw-3.2.2 的大文件夹,里面有其他文件夹,名称为 api、dft、cell、doc、kernel、fdft 等,每个文件夹都包含 .h 和 .c 文件)。
我试过去项目>属性>MinGW C链接器>库>库搜索路径(-L)并添加文件夹fftw-3.2.2。我尝试将#include 或#include 放在代码的顶部。
我可以输入像'fftw_plan p;'这样的行 它很好,但是每当我尝试使用傅立叶变换函数之一时,比如'fftw_execute(p);' ,它给了我消息'对 fftw_ececute 的未定义引用'。该项目拒绝构建和运行,我被卡住了。
我环顾了这里和其他地方,一切都在告诉我有关 libX.a 文件的信息,但 fftw-3.2.2 不包含任何扩展名为 .a 的文件。如何让 eclipse 与 fftw 一起工作?我正在使用 mingw 编译器在 windows xp 机器上运行 eclipse ganymede 3.4.1。
audio - 智能手机上音符的音高识别,pt。2
作为我之前问题的后续,如果我希望我的智能手机应用程序检测到某个音符,并且我只需要知道传入的声音是否是那个音符,并带有一定的模糊性,就可以允许注意要偏离 x 美分。
鉴于此,在速度和准确性方面是否有比其他方法更好的方法?也就是说,通过知道您要查找的音符是#C3,如何最好地判断该音符是否存在?我假设寻找单个音符比分离所有波形更容易,然后查看基频的结果。
在对我最初问题的回答中,一位受访者建议,如果您知道注释在一定范围内,自相关可能会很好地发挥作用。我想知道如果您只需要检查是否存在某个音符(+/- x 美分),那么自相关是否会更好。
这些方法是:
- 亲吻 FFT
- FFTW
- 离散小波变换
- 自相关
- 过零分析
- 倍频程滤波器
- 载重吨
任何想法将不胜感激。
signal-processing - FFT结果的大小取决于波频率?
我对从 FFT 获得的结果感到困惑,希望能提供任何帮助。
我正在使用 FFTW 3.2.2,但与其他 FFT 实现(在 Java 中)得到了类似的结果。当我对正弦波进行 FFT 时,结果的缩放取决于波的频率 (Hz)——特别是它是否接近整数。当频率接近整数时,结果值的比例非常小,而当频率在整数之间时,结果值会大几个数量级。该图显示了 FFT 结果中尖峰的大小,对应于不同频率的波频率。这是正确的吗??
我检查了 FFT 的逆 FFT 等于原始正弦波乘以样本数,确实如此。FFT 的形状似乎也是正确的。
如果我正在分析单个正弦波,那也不会那么糟糕,因为无论其高度如何,我都可以在 FFT 中寻找尖峰。问题是我想分析正弦波的总和。如果我正在分析 440 Hz 和 523.25 Hz 的正弦波总和,那么只有 523.25 Hz 的尖峰出现。另一个的尖峰非常小,看起来就像噪音。必须有某种方法可以使这项工作发挥作用,因为在 Matlab 中它确实有效——我在两个频率上都得到了类似大小的尖峰。如何更改下面的代码以均衡不同频率的缩放?
gcc - 如何从 .la 文件中获取 .so 文件?
FFTW 2.x 构建一个 .la 文件(在 fftw/.libs 目录下)。
我想我需要一个 .so 文件来链接。(我不确定,因为我是 gcc 新手)。
c++ - fftw 在 Visual Studio 中?
我正在尝试将我的项目与 fftw 链接,到目前为止,我已经编译它,但没有链接。正如该网站所说,我生成了所有 .lib 文件(即使我只使用双精度),并将它们复制到C:\Program Files\Microsoft Visual Studio 9.0\VC\lib
.h 文件C:\Program Files\Microsoft Visual Studio 9.0\VC\include
和 .dll 到C:\windows\system32
.
我已经复制了教程程序,我得到的确切错误是:
那么,我的项目设置可能有什么问题?谢谢!
c - 如何使用傅里叶变换从 WAV 文件中提取半精确频率
假设我有一个 WAV 文件。在这个文件中,是一系列以精确 1 秒为间隔的正弦音。我想使用 FFTW 库按顺序提取这些音调。这特别难做吗?我该怎么办?
另外,将这种音调写入 WAV 文件的最佳方法是什么?我假设我只需要一个简单的音频库来输出。
我选择的语言是 C