为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

STM32F4 DSP库学习笔记5-复数FFT的实现方法

2019-02-25 5页 doc 18KB 27阅读

用户头像

is_594886

暂无简介

举报
STM32F4 DSP库学习笔记5-复数FFT的实现方法STM32F4 DSP库学习笔记5-复数FFT的实现方法 我们会用了ST官方的汇编FFT库,那些库函数在没有带FPU浮点运算的32芯片上也可以用的不错。然后今天我们就用一下F4的DSP库。在该目录下包含了图中所示的源文件 复数FFT函数支持三种数据类型,分别是浮点,Q31和Q15,待会就拿浮点数来做例子。 先介绍下函数: void arm_cfft_f32( const arm_cfft_instance_f32 * S, float32_t * p1, uint8_t ifftFlag, uint8_t bitRever...
STM32F4 DSP库学习笔记5-复数FFT的实现方法
STM32F4 DSP库学习笔记5-复数FFT的实现方法 我们会用了ST官方的汇编FFT库,那些库函数在没有带FPU浮点运算的32芯片上也可以用的不错。然后今天我们就用一下F4的DSP库。在该目录下包含了图中所示的源文件 复数FFT函数支持三种数据类型,分别是浮点,Q31和Q15,待会就拿浮点数来做例子。 先介绍下函数: void arm_cfft_f32( const arm_cfft_instance_f32 * S, float32_t * p1, uint8_t ifftFlag, uint8_t bitReverseFlag); arm_cfft_instance_f32 * S是一个结构体指针这个结构体包含FFT运算的旋转因子和位反转表,就相当于一个常量,我们不用去管它。 float32_t * p1,是输入复数数组的地址,长度应该是运算点数的两倍,注意的是输入和输出共用一块缓存 uint8_t ifftFlag,是运算的正反标志ifftFlag=1是反变换。ifftFlag=0是正变换 uint8_t bitReverseFlag,是flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit  好,然后就只要这一句话就可以计算复数的FFT正变换 arm_cfft_f32(&arm_cfft_sR_f32_len1024,testInput,0, 1); 计算出结果后,用下面语句就可以求出幅值了; arm_cmplx_mag_f32(testInput, testOutput, 1024); 关于arm_cmplx_mag_f32(testInput, testOutput, 1024),它的原型是: void arm_cmplx_mag_f32( float32_t * pSrc, float32_t * pDst, uint32_t numSamples); 这个函数是求复数的模值 float32_t * pSrc,是输入数组地址 float32_t * pDst,是输出数组地址 uint32_t numSamples是运算点数 当然上面语句中testInput数组的长度是testOutput数组的两倍。因为testInput输入的是复数。 可以用下面的for语句把数据赋值给testInput[2048] for(i=0; i<1024; i++) { testInput[i*2+1] = 0; testInput[i*2] = 1.2f*arm_sin_f32(2*3.1415926f*50*i/1000)+1; }实部为正弦函数数据,虚部为0; 在串口上打印出结果。 导入到MATLAB中,把数组重命名成data 运行下面语句 >> fs=1000; >> N=1024; >> n=0:1:N-1; >> f=fs*n/N; >> plot(f,data) 显示如下:【STM32F4运算结果】 可见复数FFT效果非常不粗。 下面再用MATLAB模拟一下。 运行如下程序: >> fs=1000; >> N=1024; >> n=0:1:N-1; >> f=fs*n/N; >> t=0:1/fs:1-1/fs; >> x=1.2*sin(2*pi*100*t)+1; >> y=fft(x,1024); >> plot(f,abs(y)) 【MATLAB运算结果】 可见stm32f4的复数fft运算结果也是正确的,但是我现在也发现了一个问题就是fft变换后第一个模值会很大。
/
本文档为【STM32F4 DSP库学习笔记5-复数FFT的实现方法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索