请选择 进入手机版 | 继续访问电脑版

安富莱电子论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 251|回复: 2
收起左侧

[DSP] 基于ARM_DSP库复数FFT定点Q15结果幅值问题

[复制链接]

2

主题

18

帖子

22

积分

新手上路

积分
22
发表于 2018-7-27 15:26:39 | 显示全部楼层 |阅读模式
本人在实验arm dsp库复数fft定点函数时遇到的问题:用库函数计算幅值32768频率50Hz信号频谱,计算后频谱频率正确但幅值有误差,请问是我程序的问题还是我理解的有问题,或者是定点计算过程中精度问题导致的?

q15_t InputOutput[2048] = {0};
q15_t mag[1024] = {0};
void cfft_q15_radix4_app(void)
{
        uint16_t j = 0;
        /* 50Hz 幅度32768 正弦信号 */
        for(uint16_t i = 0; i < 1024; i++)
        {
                j = i % 20;
                InputOutput[i*2] = arm_sin_q15(1600*j);
                ANO_DT_Send_UserInt16((uint8_t *)&InputOutput[i*2]);
        }
       
        arm_cfft_radix4_instance_q15 S;
        arm_cfft_radix4_init_q15(&S, 1024, 0, 1);
        arm_cfft_radix4_q15(&S, InputOutput);                //结果缩小2^10倍
       
        arm_cmplx_mag_q15(InputOutput, mag, 1024);        //结果缩小2倍
       
        for(uint16_t i = 0; i < 1024; i++)
        {
                //补偿1024点cfft缩放的1024倍; 补偿arm_cmplx_mag_q15缩放的2倍
                mag[i] = mag[i] * 1024 * 2 / 512;
                ANO_DT_Send_UserInt16((uint8_t *)&mag[i]);
        }
}

结果频谱

结果频谱
回复

使用道具 举报

5275

主题

3万

帖子

4万

积分

管理员

做人第一,工作第二

Rank: 9Rank: 9Rank: 9

积分
42670
QQ
发表于 2018-7-27 17:57:10 | 显示全部楼层
正常,有频谱泄露

QQ截图20180727175703.png
淘宝小店: https://armfly.taobao.com/
专注,努力,用心的做好每一件事情,Fighting!
回复

使用道具 举报

2

主题

18

帖子

22

积分

新手上路

积分
22
 楼主| 发表于 2018-7-30 09:32:37 | 显示全部楼层
恩,是频谱泄露导致的。我把信号调成32Hz,采样整数倍周期就好了。

正确频谱

正确频谱
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|安富莱电子论坛 ( 鄂ICP备09023347号,公安机关备案号42010602000201 )

GMT+8, 2019-2-19 15:01 , Processed in 0.174766 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表