#include "myapp.h" #include "ICETEK-VC5509-EDU.h" #include "AD_FFT.h" #include "ad.h" #include "scancode.h" #include <math.h> #define PI 3.1415926 #define SAMPLENUMBER 128 int nADC0[SAMPLENUMBER]; int INPUT[SAMPLENUMBER]; int DATA[SAMPLENUMBER]; float fWaveR[SAMPLENUMBER]; float fWaveI[SAMPLENUMBER]; float w[SAMPLENUMBER]; //FFT实部、虚部和功率谱 main() { register int i; //将一些循环中的变量定义为register类型,这样可以增加寄存器的使用,提高效率 int uWork; InitForFFT(); //初始化FFT所需要的变量(InitForFFT函数) while (1) { for ( i=0; i<128 ; i++) { ADCCTL=0x8000; //启动AD转换,通道0 do { uWork = ADCDATA; } while ( uWork&0x8000 ); nADC0[i]=uWork&0x0fff; } for ( i=0; i<128;i++) { INPUT[i]=nADC0[i]; } //FFT for ( i=0; i<SAMPLENUMBER;i++ ) { fWaveR[i]=(float)INPUT[i]; //将输出信号赋值到实部 fWaveI[i]=0.0f; //定义虚部为0 w[i]=0.0f; //初始化输入信号波形频谱值为0 } FFT(fWaveR, fWaveI); //对输入波形进行快速傅里叶变化 for ( i=0; i<SAMPLENUMBER; i++ ) { DATA[i]=w[i]; //将输出信号波形频谱存储到DATA数组中 } while(1); } }
时间: 2023-06-19 20:04:33 浏览: 105
Android use JNI CALL include .h method sample
4星 · 用户满意度95%
这段代码是用于对音频信号进行FFT(快速傅里叶变换)处理的,主要流程如下:
1. 宏定义PI和SAMPLENUMBER。
2. 定义一些变量,包括ADC采集到的原始数据、FFT所需的实部、虚部和功率谱。
3. 调用InitForFFT函数初始化FFT所需的变量。
4. 进入一个无限循环,每次采集128个ADC数据存入nADC0数组中,再将nADC0的数据复制到INPUT数组中。
5. 将INPUT数组的数据赋值给fWaveR数组的实部,虚部初始化为0,输入信号波形频谱值初始化为0。
6. 调用FFT函数对输入信号进行FFT变换。
7. 将FFT输出的波形频谱存储到DATA数组中。
8. 进入一个无限循环,等待下一次采集。
需要注意的是,这段代码可能只是一个片段,缺少了一些必要的头文件和函数定义,因此不能直接编译运行。
阅读全文