我正在使用fft2在MATLAB中计算灰度图像的傅立叶变换。 绘制结果大小的常用方法是什么?
后者只是前者的同义词,还是两种不同的FFT实现? 哪一个更好?
是否有任何通用的短时傅立叶变换forms,并在SciPy或NumPy中内置相应的逆变换? 在matplotlib中有pyplot specgram函数,它调用ax.specgram() ,它调用mlab.specgram() ,它调用_spectral_helper() : #The checks for if y is x are so that we can use the same function to #implement the core of psd(), csd(), and spectrogram() without doing #extra calculations. We return the unaveraged Pxy, freqs, and t. 但 这是一个帮助函数,实现204 #psd,csd和频谱图之间的通用性。 这并不意味着在mlab之外使用 不过,我不确定这是否可以用来做STFT和ISTFT。 还有什么,或者我应该翻译像这些MATLAB函数 ? 我知道如何编写我自己的临时实现; 我只是寻找一些function齐全的,可以处理不同的窗口function(但有一个理智的默认),完全可逆COLA窗口( istft(stft(x))==x ),由多人testing,没有逐个错误,处理结束和零填充,为实际input快速RFFT实现等。
我的问题与信号的频谱分析结果的物理意义有关,或者将信号投射到FFT中,并使用合适的数字包来解释出现的结果, 特别: 取一个信号,说一个时变电压v(t) 把它扔进一个FFT(你得到一个复数序列) 现在取模数(abs)并将结果平方,即| fft(v)| ^ 2。 所以你现在在y轴上有实数 – 我应该把这些谱系数称为什么? 使用采样分辨率,您遵循食谱配方,并将频谱系数与频率相关联。 在这个点上,你有一个频率为g(w)的频率在x轴上, 但在y轴上有什么物理单位? 我的理解是,这个频谱显示了电压信号中存在多less不同的频率 – 它们是频谱系数,它们是重构原始信号所需的各种频率的正弦和余弦系数。 所以第一个问题是, 这些频谱系数的单位是多less? 这个问题的原因是频谱系数可能很小而且很大,所以我想用一个dB量表来表示它们。 但要做到这一点,我必须做出select: 要么我使用20log10 dB转换,对应于现场测量,如电压。 或者我使用10log10 dB转换,对应于电能等能量测量。 我使用哪种缩放比例取决于单位是什么。 任何灯光在此将不胜感激!
即使algorithm的input是一组离散的实数(整数),我们所遇到的所有FFT实现都会导致复值(包含实部和虚部)。 仅用实数来表示频域是不可能的?
我需要一些帮助来理解DFT / FFT计算的输出。 我是一名经验丰富的软件工程师,需要解读一些智能手机加速计读数,例如find主要频率。 不幸的是,我十五年前就读过大部分大学的EE课程,但在过去的几天里,我一直在阅读DFT和FFT(显然没有多大用处)。 请不要回答“去参加EE课”。 我实际上打算这样做,如果我的雇主将支付我。 🙂 所以这是我的问题: 我已经捕获了一个32赫兹的信号。 这是我在Excel中绘制的32分的1秒样本。 然后,我得到了哥伦比亚大学用Java编写的一些FFT代码 (在遵循“ Java中可靠且快速的FFT ”的文章中的build议之后)。 这个程序的输出如下。 我相信它正在运行一个就地FFT,所以它重新使用相同的缓冲区的input和输出。 Before: Re: [0.887 1.645 2.005 1.069 1.069 0.69 1.046 1.847 0.808 0.617 0.792 1.384 1.782 0.925 0.751 0.858 0.915 1.006 0.985 0.97 1.075 1.183 1.408 1.575 1.556 1.282 1.06 1.061 1.283 1.701 1.101 0.702 ] Im: [0.0 0.0 […]
我可以自己写一些东西,通过find一阶导数的零交叉或某些东西,但它似乎是一个普通的function,被包含在标准库中。 任何人都知道吗? 我的具体应用是2D数组,但通常用于查找FFT中的峰值等。 具体而言,在这些问题中,有多个强峰,而且有很多较小的“峰”是由噪声引起的,应该忽略。 这些只是例子。 不是我的实际数据: 1维峰值: 二维峰值: 峰值searchalgorithm将find这些峰值的位置(不仅仅是它们的值),理想情况下可以find真正的样本间峰值,而不仅仅是具有最大值的指数,可能使用二次插值或其他。 通常你只关心几个强的峰值,所以他们要么select,因为他们高于一定的阈值,或者因为他们是一个有序列表的前n个峰值,按幅度sorting。 正如我所说,我知道如何自己写这样的东西。 我只是问是否有一个预先存在的function或包已知可以正常工作。 更新: 我翻译了一个MATLAB脚本 ,它适用于一维情况,但可能会更好。 更新更新: sixtenbe为1-D案例创build了一个更好的版本 。
好吧,即时通讯试图做的是一种audio处理软件,可以检测到一个stream行的频率,如果频率播放足够长的时间(几毫秒),我知道我得到了积极的匹配。 我知道我需要使用FFT或类似simiral,但在这个math领域,我吸了,我没有search互联网,但没有find一个代码,只能做到这一点。 即时通讯的目标是让自己的声音发送数据的自定义协议,需要每秒(5-10bps)非常低的比特率,但即时通讯也非常有限的传输端,所以接收软件将需要能够自定义(不能使用实际的硬件/软件调制解调器)也我想这只是软件(没有额外的硬件,除了声卡) 非常感谢您的帮助。
我正在使用android项目。我需要FFTalgorithm来处理android加速度计数据。是否有在android sdk中可用的FFT库?
我想生成一个mp3audio文件的audio频谱(如在这个video中所见)。 基本上这个问题需要计算audio信号的fft。 我如何在C / C ++中编程? 我已经看了几个开源库,如FFTW ,我真的不知道如何使用这些来解决我的问题。 任何帮助将不胜感激。 提前致谢!