Tag: fftw

如何在转置的数据数组上使用fftw_plan_many_dft?

我有一个以列主要(Fortran风格)格式存储的2D数据数组,我想对每一行进行FFT。 我想避免转置数组(它不是正方形)。 例如,我的数组 fftw_complex* data = new fftw_complex[21*256]; 包含条目[r0_val0, r1_val0,…, r20_val0, r0_val1,…,r20_val255] 。 我可以使用fftw_plan_many_dft制定计划,以便在dataarrays中就地解决每个21个FFT,如果它是行 –主要的,例如[r0_val0, r0_val1,…, r0_val255, r1_val0,…,r20_val255] : int main() { int N = 256; int howmany = 21; fftw_complex* data = new fftw_complex[N*howmany]; fftw_plan p; // this plan is OK p = fftw_plan_many_dft(1,&N,howmany,data,NULL,1,N,data,NULL,1,N,FFTW_FORWARD,FFTW_MEASURE); // do stuff… return 0; } 根据文档( FFTW手册第4.4.1节 ),该function的签名是 fftw_plan […]

实施Hann Window

我获取输入数据块并通过fftw传递它们以获得一些光谱信息。 一切似乎都在起作用,但我认为我遇到了一些混叠问题。 我一直在努力研究如何在我的数据块上实现一个hann窗口。 谷歌让我失望了。 我应该关注的任何想法或链接? double dataIn[2048] > /* windowing here? */ > FFT > double freqBins[2048] 更新 感谢Oli指出我实际上要解决的问题是光谱泄漏,而不是混淆……

如何使用傅里叶变换从WAV文件中提取半精确频率

我们说我有一个WAV文件。 在此文件中,是精确1秒间隔的一系列正弦音。 我想使用FFTW库按顺序提取这些音调。 这特别难吗? 我怎么会这样呢? 另外,将这种音调写入WAV文件的最佳方法是什么? 我假设我只需要一个简单的音频库来输出。 我选择的语言是C.

如何使用C中的FFTW从PortAudio中提取样本的频率信息

我想制作一个程序,用PortAudio录制音频数据(我完成了这部分),然后显示录制音频的频率信息(现在,我想显示每组样本的平均频率)他们进来的时候)。 从我做过的一些研究中,我知道我需要进行FFT。 所以我用谷歌搜索了一个库,在C中找到了FFTW。 但是,现在我有点失落。 我应该怎么处理我记录的样本以从中提取一些频率信息? 我应该使用什么样的FFT(我假设我需要一个真实的数据1D?)? 一旦我进行了FFT,如何从它给我的数据中获取频率信息? 编辑:我现在也发现了自相关算法。 好点吗? 更简单? 非常感谢,对不起,如果这样,我绝对没有经验。 我希望它至少有点意义。