我有一个数据集(一个数组),我需要在其中找到周期性.我该怎么办?有人说我可以使用FFT,但我不确定它会如何给我周期性.非常感谢您的帮助!
什么是iOS/Android ARM设备最快的FFT库?人们通常在iOS/Android平台上使用什么库?我猜vDSP是iOS上最常用的库.
编辑:我的代码是http://anthonix.com/ffts并使用BSD许可证.它在Android和iOS上运行,比libav,FFTW和vDSP更快.
EDIT2:如果有人可以访问POWER7机器(或其他机器),请给我发电子邮件.非常感谢.
干杯,
我正在使用clown.jpg图像来摆脱它所带来的明显模式/噪音.

我在对图像进行FFT之前所做的第一步是将其重新调整为2的幂方形图像(即256 x 256).在matlab中使用FFT和fftshift可以在图像中心的强度下进行快速傅立叶变换.下图是使用前面提到的功能的结果.

通过在FFT图像上手动归零"星形",我成功地消除了模式/噪声,如下所示:

采用IFFT,我得到了更好的图像质量(未显示).
我的问题是,是否有一种将"星星"归零的自动方式?由于我们不想删除最明亮的"星形",DC分量和低值,因此我创建了一个将图像归零的区间.这样的阈值如下:
filter = (fLog > .7*max(fLog(:)) ) | (fLog < .25*max(fLog(:)) )
where fLog is the log(1+abs(Fourier image)) and .7 and .25 are the corresponding
interval percentages.
Run Code Online (Sandbox Code Playgroud)
输出掩码(我将乘以傅立叶图像)如下所示.黑色对应于0的值,白色对应于1.请注意,此蒙版的过滤会删除一些"星星"并保留一些直流分量.显然这种方法不是最好的.

我正在阅读关于做高通滤波器的内容,但这似乎删除了傅立叶图像中的所有外部值.这是基于我之前的测试(我没有包括这些图像).
您是否建议突出显示除DC组件之外的高强度值.理想情况下,我想让面具看起来像:

来源:http://users.accesscomm.ca/bostrum/Imaging/tips/tip1.html
在另一个网站中,有人提到使用"高通和水平校正FFT数据只保留代表光栅图案的杂散点".我不清楚如何做到这一点.
来源:http://www.robotplanet.dk/graphics/raster_removal/
对你的帮助表示感谢.
这是我的源代码帮助:
I = imread('clown.jpg'); % Read Image
% convert to grayscale
I = rgb2gray(I);
% normalize the image and conver to doubleI
I = double(mat2gray(I));
% Resize the image
I = imresize(I, [256 256]); …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用NTL中的ZZ_pEX类来执行4096度的多项式的乘法运算.然而,它返回错误"Polynomial对于FFT来说太大了",我找不到让它工作的方法(甚至可以帮助NTL文档的东西),但幻灯片中的评论说它可以修复(不说怎么样!).
有人找到了解决方法吗?
我想获取音频PCM数据并在其中找到峰值.具体来说,我想返回峰值出现的频率和时间.
我对此的理解是我必须将PCM数据转储到一个数组中,将其设置为实数值,将复杂的部分设置为0.然后我接受FFT,然后得到一个数组.如果数组中的每个数字都是一个幅度值,我如何获得与每个数字相关的频率?另外,我是否考虑了真实和复杂部分的大小或者只是丢弃了复杂的值?
最后,如果我想在一首歌中找到峰值,我是否只需设置一个小窗口进行FFT并将其滑过所有音频?有关该窗口应该有多大的任何建议?
我想制作一个程序,用PortAudio录制音频数据(我完成了这部分),然后显示录制音频的频率信息(现在,我想显示每组样本的平均频率)因为他们进来了).
从我做过的一些研究中,我知道我需要进行FFT.所以我用谷歌搜索了一个库,用C语言,找到了FFTW.
但是,现在我有点失落了.我应该怎么处理我记录的样本以从中提取一些频率信息?我应该使用什么样的FFT(我假设我需要一个真实的数据1D?)?
一旦我进行了FFT,如何从它给出的数据中获取频率信息?
编辑:我现在也发现了自相关算法.好点吗?更简单?
非常感谢,对不起,如果这样,我绝对没有经验.我希望它至少有点意义.
第一次在这里如此抱歉任何屠宰格式.
所以我对DSP是全新的,所以我对傅里叶变换只有非常全面的了解.我正在尝试为Android SDK 9构建一个可视化应用程序,其中包括android.media.audiofx.Visualizer中的Visualizer类 http://developer.android.com/reference/android/media/audiofx/Visualizer.html
方法getFft()的javadoc,这是我使用的状态:
"返回当前正在播放的音频内容的频率捕获.捕获是一个8位幅度的FFT.请注意,FFT的大小是指定捕获大小的一半,但是频谱的两侧都返回,产生的字节数相等捕获大小."
首先,"光谱的双方"是什么意思?该输出与标准FFT有何不同?
这是字节数组的一些示例输出,getFft()给出了124点以保持简单,我抓住了前31个分档.以下是前31个箱子的大小:
{123, -2, -23, -3, 6, -16, 15, -10, -8, -12, 9, -9, 17, -6, -18, -22, -8, 4, -5, -2, 10, -3, -11, 3, -4, -11, -8, 15, 16, 11, -12, 12}
Run Code Online (Sandbox Code Playgroud)
任何帮助或解释将不胜感激!
编辑: 因此,在盯着一堆图表后,看起来我的问题的一部分是谷歌没有指定使用的是哪个单位.几乎所有其他测量都是以mHz进行的,假设FTT输出也是mHz是否公平?有没有一个地方可以看到Visualizer类的源代码,所以也许我可以弄清楚幕后真的到底是怎么回事?
我继续抓住了getFft()的所有输出
93, -2, -28, -16, -21, 19, 44, -16, 3, 16, -9, -4, 0, -2, 21, 16, -3, 1, 2, 4, -3, 5, 5, 10, 6, 4, -9, 7, -2, -1, 2, 11, -1, 5, -8, …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一些代码来预测在给定的n维数组上执行离散傅立叶变换所需的时间,但我很难理解n维FFT的计算复杂性.
据我了解:
长度的矢量的一维FFT N应该采取k*(N*log(N))其中k是一些定时恒定
对于M*N矩阵,2D FFT应采用:
N*(k*M*log(M)) + M*(k*N*log(N)) = k*M*N*(log(M)+log(N))
因为它需要在每行和每列中采用1D FFT
这如何概括为ND案例?它应该遵循它应该是k*prod(dimensions)*sum(log(dimensions))吗?
在python中获取二维DFT的DFT矩阵的最简单方法是什么?我在numpy.fft找不到这样的功能.谢谢!