草庐IT

kiss_fft_cpx

全部标签

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++ - 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++ - 帮助 FFT(快速傅里叶变换)和/或 DSP

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

基于Xilinx vivado FFT ip进行信号频谱测量

本文章使用Xilinx的fftip完成了经过参数化的任意个信号的基频测量,完整代码以及代码解释在文章中给出。如有错误,希望指出。 SIGNAL_NUM=2,//*需要检测的信号个数FFT_LEN=8192,//*fft运算采样长度FFT_WIDTH=32,//*fftip输出数据宽度,实部和虚部位宽为FFT_WIDTH/2SAMPLE_RATE=50,//*ADC采样率,单位Mhz,比如此时为50MhzADC_WIDTH=16,//*ADC数据位宽FFT_CONFIG_WIDTH=8//*FFTip的配置信号位宽(未使用)ps:只使用了fftip进行频率测量未测量幅度,为防止错误不对幅度测量进

c++ - 结构 (C) 中的 malloc 错误

我在C头文件中有如下代码typedefstruct{kiss_fft_scalarr;kiss_fft_scalari;}kiss_fft_cpx;并且我在测试程序中实现了如下代码kiss_fft_cpx*fin=malloc(4*sizeof(kiss_fft_cpx));它给了我错误消息:“类型为void的值不能用于初始化类型为‘kiss_fft_ctx’的实体”。我正在使用VisualStudioC/C++win32控制台项目。谁能告诉我如何在这里正确使用malloc?谢谢! 最佳答案 你需要像这样转换返回类型:kiss_ff