jjzjj

c++ - 如何执行 FFT2D(快速傅立叶变换 2D)R、G、B 颜色分量

我是快速傅里叶变换(FFT)的新手,不太清楚它是如何用C++等编程语言计算的。这是FFT2D的方法voidFFT2D(Complex*f,Complex*F,intwidth,intheight);Ittakesaninputimagefofsizewidth*heightandoutputthetransformedcoefficientsintoF.提示:图像像素存储为三个独立的图像颜色(R、G、B)平面,每个平面由一维复数数组表示。假设一幅图像的尺寸为宽W,高H,则图像位置(m,n)处像素的颜色分量值(R,G,B)可表示为R[m+n*W],G(m+n*W)和B[m+n*W],其中

c++ - 傅里叶变换浮点问题

我正在为图像实现传统的(这意味着不快)分离傅立叶变换。我知道在浮点数中,等距样本中一个周期的sin或cos的总和并不完全为零,这对于传统变换来说更像是一个问题,而不是快速变换。该算法适用于二维双数组并且是正确的。逆是在内部完成的(在使用不对称公式时通过双符号标志和条件检查),而不是在外部使用共轭。结果几乎100%像预期的那样,所以这是一个关于细节的问题:当我执行正向变换、将对数幅度和角度保存到图像、重新加载它们并进行逆变换时,我会遇到不同类型的舍入误差和不同类型的实现公式:F(u,v)=Sum(x=0->M-1)Sum(y=0->N-1)f(x,y)*e^(-i*2*pi*u*x/M)

c++ - OpenCL 中复杂数学问题的开源库,如 Matrix Mul、LU、FFT 等

GPU在通用中的使用现在很普遍。最基本的是,矩阵乘法是OpenCL教程中的第一个。而不是针对特定的gpu编写代码和内核代码。是否可以从MKL之类的库中调用它们。Arrayfire在那里但不是免费的。我正在尝试将我的模拟软件移植到具有MatrixMul、LU分解、FFT等的GPU。我正在为这些寻找健壮的代码,而不是从头开始编写它们。我已经有了一个可用的matmulopencl程序,但只是缺乏将它与我的代码集成的知识。下一步我正在尝试使用LU,是否有任何LU代码可以帮助我。 最佳答案 查看ViennaCLhttp://viennacl.

c++ - 搜索基于 3D fft 卷积的库

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭3年前。Improvethisquestion我有一个大的3D矩阵和一个小的3D矩阵,我想使用基于3Dfft的卷积在大矩阵中为我的小3D矩阵找到最佳匹配。您有任何C++代码可以做到这一点吗?

c++ - 奇怪但接近 c++ 中图像的 fft 和 ifft

我编写了一个程序来加载、保存黑白png图像并执行fft和ifft。经过多次调试,我终于得到了一些连贯的输出,却发现它扭曲了原始图像。输入:fft:简单:据我测试,每个数组中的像素数据都被正确存储和转换。像素存储在两个数组中,“data”包含每个像素的b/w值,“complex_data”是“data”的两倍长,并在交替索引中存储每个像素的实部b/w值和虚部。我的fft算法在结构类似于“complex_data”的数组上运行。在读取用户命令的代码之后,这里是有问题的代码:if(cmd=="fft"){if(height>width)size=height;elsesize=width;N

c++ - FFT和IFFT的长度

我有一些信号,我将它们加起来形成一个更大的信号,其中每个信号都位于不同的频率区域。现在,我使用FFTW对大信号执行FFT运算,并切出具体的FFTbin(信号所在的位置)。例如:大信号用1024点进行FFT变换,信号的采样率为fs=200000。我通过以下方式计算给定起始频率和终止频率的具体bin位置:tIndex.iStartPos=(int64_t)((tFreqs.i64fstart)/(mSampleRate/uFFTLen));例如我得到的第一个信号被切掉了16个bin。现在,我再次使用FFTW进行IFFT变换并取回16个复数值(因为我为16个bin保留了vector)。但是当

c++ - C/C++ 中固定长度实数输入数据的高效二维 FFT

我正在开发一种多次调用FFT函数的算法。我有几个时间限制(需要实时),所以我需要尽量减少每次FFT调用所花费的时间。我正在使用OpenCV库,我已经用两种不同的方法实现了我的代码:使用FFTW库。数据/内存管理+FFT(8ms)=14ms(平均,FFT_MEASURE标志)。使用OpenCVfft函数。数据/内存管理+FFT(21ms)=23ms(平均值)。由于我的输入数据总是固定为512x512像素的真实图像,你认为如果我自己实现基于DFT数学定义的FFT算法,存储正弦/余弦表,我可以获得更好的性能还是FFTW库真的很优化吗?有更好的想法吗?所有想法和建议将不胜感激。到目前为止,我不

c++ - 如何对 WAV 文件数据执行 FFT?

我正在尝试通过检测存在的最高频率来分析文件的音频质量(压缩音频通常会被过滤到低于20KHz的频率)。我正在使用soundstretch库中的一个类读取WAV文件数据,该类将PCM样本作为float返回,然后使用fftw3库对这些样本执行FFT。然后对于每个频率(四舍五入到最接近的KHz),我将计算该频率的振幅。因此对于不包含高于16KHz频率的低质量文件,我希望在16KHz以上没有或只有很小的幅度,但是我没有得到我期望的结果。下面是我的代码:#include#include#include#include#include"include/WavFile.h"usingnamespace

c++ - 将 fftw 与列主方矩阵一起使用( Armadillo 库)

我发现ArmadilloC++库对于矩阵计算非常方便。如何使用FFTW库对Armadillo矩阵执行二维FFT?我知道Armadillo矩阵类按列主要顺序存储数据。我如何将其传递给FFTW?fftw3.3.3文档说Ifyouhaveanarraystoredincolumn-majororderandwishtotransformitusingFFTW,itisquiteeasytodo.Whencreatingtheplan,simplypassthedimensionsofthearraytotheplannerinreverseorder.Forexample,ifyourarr

c++ - 帮助 FFT(快速傅里叶变换)和/或 DSP

我正在尝试做一个屏幕闪烁应用程序,它根据音乐(这将是频率,例如治疗频率等...)闪烁屏幕。我已经制作了播放器并且知道如何让屏幕闪烁,但我需要根据音乐使屏幕闪烁得超快,例如,如果音乐加快,屏幕闪烁会更快。我知道我可以通过FFT或DSP实现这一点(因为我只需要知道频率何时从某个Hz升高,比如说20来改变颜色,使屏幕闪烁)。但我发现我什么都不懂,更不用说尝试将它实现到我的应用程序中了。有人可以帮我学习他们两个吗?我的电子邮件是sismetic_chaos@hotmail.com。我真的需要帮助,我被困了大约3天没有编码或做任何事情,试图理解,但我没有。PS:我的应用程序是用C++和Qt编写的