金牌会员
 
- 积分
- 1136
- 金钱
- 1136
- 注册时间
- 2015-11-29
- 在线时间
- 146 小时
|
10金钱
1 #include "stm32f4xx_conf.h" 2 //位带操作 3 #include "sys.h" 4 #include "delay.h" 5 #include "usart.h"10 #include "arm_math.h"11 #define FFT_LENGTH 1024 //FFT长度,默认是1024点FFT12 13 float fft_inputbuf[FFT_LENGTH*2]; //FFT输入输出数组,此数组为arm_cfft_radix4_f32的输入输出数组,前一个元素为实部,后一个为虚部,每两个元素代表一个点.14 float fft_outputbuf[FFT_LENGTH]; //arm_cmplx_mag_f32() 幅度输出数组15 arm_cfft_radix4_instance_f32 scfft;16 17 int main(void)18 { 19 delay_init(168);20 lcd_init(0); //初始化LCD21 key_init();22 uart_init(115200); //初始化串口波特率为11520023 24 arm_cfft_radix4_init_f32(&scfft,FFT_LENGTH,0,1);//初始化scfft结构体,设定FFT相关参数25 26 while(1)27 {28 u32 keyval = (u32)keys_scan(0);29 if(keyval==1)30 {31 for(int i=0;i<FFT_LENGTH;i++)//生成信号序列32 {33 fft_inputbuf[2*i]=15 + 10*arm_sin_f32(2*PI*i*100/FFT_LENGTH) + \34 5.5*arm_sin_f32(2*PI*i*150/FFT_LENGTH); //生成实部35 36 fft_inputbuf[2*i+1]=0;//虚部全部为037 }38 arm_cfft_radix4_f32(&scfft,fft_inputbuf); //FFT计算(基4)39 arm_cmplx_mag_f32(fft_inputbuf,fft_outputbuf,FFT_LENGTH); //把运算结果复数求模得幅值 40 41 printf("FFT Result:\r\n");42 for(int i=0;i<FFT_LENGTH;i++)43 {44 printf("%f\r\n",fft_outputbuf);45 }46 }47 delay_ms(60);48 }49 }这个地方直接算出幅值,那位大神知道怎么算相位?
|
|