①rfft实数傅里叶变换
uint16_t fftSize = 2048; //定义rfft的长度uint8_t ifftFlag = 0; //表示fft变换为正变换,1则为逆变换arm_rfft_fast_instance_f32 S; //定义rfft的结构体arm_rfft_fast_init_f32 (&S, fftSize); //例化fft结构体,确定fft点数arm_rfft_fast_f32(&S,data_frame_left, fr_left,ifftFlag); //1024点实序列FFT
②cfft复数傅里叶变换
#include "arm_math.h"
#include "arm_const_structs.h"
在使用cfft时会报错arm_cfft_sR_f32_lenXXX未定义,需要incluarm_const_structs.h”
arm_cfft_f32(&arm_cfft_sR_f32_len2048, c_real, 1, 0);
函数描述:
这个函数用于单精度浮点复这个函数 用于单精度浮点复这个函数 用于单精度浮点复这个函数 用于单精度浮点复这个函数用于单精度浮点复这个函数 用于单精度浮点复FFT 。
函数参数:
◆ 第1个参数是封装好的浮点FFT例化,支持的参数如下:
⚫ arm_cfft_sR_f32_len16,16点FFT ⚫ arm_cfft_sR_f32_len32,32点FFT ⚫ arm_cfft_sR_f32_len64,64点FFT ⚫ arm_cfft_sR_f32_len128,128点FFT ⚫ arm_cfft_sR_f32_len256,256点FFT ⚫ arm_cfft_sR_f32_len512,512点FFT ⚫ arm_cfft_sR_f32_len1024,1024点FFT ⚫ arm_cfft_sR_f32_len2048,2048点FFT
⚫ arm_cfft_sR_f32_len4096,4096点FFT
◆ 第2个参数是复数地址,存储顺序是实部,虚部,实部,虚部,依次类推。
◆ 第3个参数用于设置正变换和逆变换,ifftFlag=0表示正变换,ifftFlag=1表示逆变换。
◆ 第4个参数用于设置输出位反转,bitReverseFlag=1表示使能,bitReverseFlag=0表示禁止。
③幅值计算
arm_cmplx_mag_f32(testInput_f32, testOutput_f32, TEST_LENGTH_SAMPLES);
对于输入数据求解其幅度,即sqrt(x^2+y^2).
参考文献:
【1】安富莱 STM32-V7 开发板数字信号处理教程