Audio 如何在音频分析仪中使用实基频傅里叶变换?

Audio 如何在音频分析仪中使用实基频傅里叶变换?,audio,fft,analyzer,spectrum,kissfft,Audio,Fft,Analyzer,Spectrum,Kissfft,我试图实现真正的计算 我相信每个人都知道,我不是第一个在这里询问kiss FFT的人,也不是第一个专门询问kiss_fftr的人。我对FFT相当陌生,但已经掌握了大部分基本知识,现在我正试图在ATxmega192A3的音频分析仪中实现它 下面是我复制和修改的基本代码,它试图将512个8位ADC样本输入FFT,以获得256个输出频率单元 int size = 512; int isinverse = 1; kiss_fft_scalar zero; memset(&zero,0,sizeo

我试图实现真正的计算

我相信每个人都知道,我不是第一个在这里询问kiss FFT的人,也不是第一个专门询问kiss_fftr的人。我对FFT相当陌生,但已经掌握了大部分基本知识,现在我正试图在ATxmega192A3的音频分析仪中实现它

下面是我复制和修改的基本代码,它试图将512个8位ADC样本输入FFT,以获得256个输出频率单元

int size = 512;
int isinverse = 1;
kiss_fft_scalar zero;
memset(&zero,0,sizeof(zero));
kiss_fft_cpx fft_in[size];
kiss_fft_cpx fft_out[size];

kiss_fftr_cfg fft = kiss_fftr_alloc(size*2,0,0,0);

//load 512 samples from ADC into fft_in[].r and zero out fft_in[].i, fft_out[].i, and fft_out[].r

kiss_fftr(fft, (kiss_fft_scalar*) fft_in, fft_out);
以下是我的问题:

  • 外箱是否有重叠?意思是如果我在看。。比如说12Hz输出框是否只显示12Hz,而没有部分舍入12.1Hz(我知道音频不够精确,因此会有剩余的物理效应导致干扰)

  • 我很难想出如何使用kiss\u fftr\u cfg。我不确定所有选项的标签都在哪里,因为它使用8位整数(或16位,但这不意味着我所有的输入样本都需要16位吗?之前代码中的所有内容,包括cfg的声明,除了他前两个int声明外,我都不理解,也不确定他为什么使用memset而不允许kiss_fftr分配空间。我在哪里可以找到更多信息?我已经找到了我用kiss_fft浏览了大部分包含的文件,似乎没有找到多少有用的信息,而是花了好几个小时来挖掘代码


  • FFT输出单元的带宽约为2*Fs/N(FFT长度上的采样率),但会作为Sinc形函数衰减或转换。因此,除单元中心外,所有FFT结果单元与所有其他单元重叠


    使用kiss FFT需要了解C数据类型以及哪些自动转换有效与否。

    请阅读帮助->教程,特别是关于“无闲聊”的部分,因此问题“1”的答案是“是的,有重叠”谢谢!我知道C语言自动转换变量类型的能力,我猜你指的是它。处理浮点需要的时间比说的要长。无符号整数通常会对MCU的CPU周期产生很大影响。如果可能的话,我希望用整数代替默认的浮点,但找不到详细的文档配置选项上的任何位置!