硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4964|回复: 4
收起左侧

[有问必答] DSP教程中Q15的FFT为何要转换为浮点后再求模

[复制链接]

98

主题

360

回帖

654

积分

金牌会员

积分
654
发表于 2016-5-25 17:47:39 | 显示全部楼层 |阅读模式
    for(i = 0; i < fftSize; i++)
    {
        testOutput_f32_10khz = (float32_t)testOutput_q15_50hz;
    }
DSP教程中求出Q15的FFT之后转换为浮点后用浮点求模,为什么不直接用arm_rfft_q15求模?转换成浮点是为了提高精度?
PS:例程中注释错误好多啊!
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2016-5-25 18:02:34 | 显示全部楼层
定点数是需要定标的,用整数来做浮点运算,转换成浮点才是实际值,arm_rfft_q15求出来的不是模值。
别用定点,太麻烦了,输入和输出都需要定标,F407就用浮点就行。

错误很多吗!升级下一版的时候看看!
回复

使用道具 举报

98

主题

360

回帖

654

积分

金牌会员

积分
654
 楼主| 发表于 2016-5-26 13:35:16 | 显示全部楼层
不还意思,昨天粘贴错了,我指的是为什么不直接用arm_cmplx_mag_q15求模,
我昨天运行了以下代码,方案1基波模值为512,方案2基波模值为8191;
实际AD采样的数值在-32767~32767之间,怎么觉得方案2运算比较快呢?
55555.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2016-5-26 13:49:07 | 显示全部楼层
不可以这么算,Q15的rfft求出的数据是Q5格式的,你这个就是把Q5格式的数据带到Q15里面去计算。

当然,你把输入和输出的定标都处理好了,怎么搞都行。F407就用浮点就行,计算非常快的。求平方根更是简单,一条__sqrt指令就可以完成,仅需2-3个时钟周期。
回复

使用道具 举报

98

主题

360

回帖

654

积分

金牌会员

积分
654
 楼主| 发表于 2016-5-26 14:13:20 | 显示全部楼层
好的,学习了,谢谢!
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-14 00:48 , Processed in 0.040711 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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