You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

定点数vs浮点数:量化导致陀螺仪数据恶化的原因及配置疑问

量化对陀螺仪数据的影响疑问

我正在开展一项分析量化对姿态估计算法影响的项目。

使用浮点型数据类型时,陀螺仪采集的原始数据如下:

gx=-0.001064650843716541
gy=-0.0042603487041181585
gz=0.0053267448770866945

当我使用sc_fixed < 16,8,SC_TRN,SC_SAT>(分配8位给整数部分,剩余位给小数部分)进行量化后,得到以下结果:

gx=-.00390625
gy=-.0078125
gz=.00390625

我无法理解量化为何会导致这些数值出现如此明显的恶化。我还尝试了以下几种位配置:

sc_fixed < 24,10,SC_TRN,SC_SAT>
sc_fixed < 32,10,SC_TRN,SC_SAT>
sc_fixed < 32,11,SC_TRN,SC_SAT>

这些配置下的结果虽受量化影响,但远不及使用<16,8>时的程度。


问题根源:小数位宽不足导致精度缺失

你遇到的数值恶化核心原因是位宽分配严重不合理:

  • 对于sc_fixed<16,8,SC_TRN,SC_SAT>,总位宽16位,其中8位分配给整数部分,剩余16-8=8位是小数部分。
  • 8位小数能表示的最小精度为 1/(2^8) = 0.00390625,这正好是你量化结果的步长。
  • 你的原始陀螺仪数据绝对值都在0.001~0.006之间,在8位小数的精度下,只能被近似到最近的可用刻度值:
    • gx=-0.00106 距离 -0.00390625(最小负刻度)更近,截断模式下被近似为该值;
    • gy=-0.00426 超过了 -0.00390625,被近似到下一个负刻度 -0.0078125;
    • gz=0.00532 介于 0.00390625 和 0.0078125 之间,截断后取较小的 0.00390625。

其他配置误差更小的原因

你尝试的几种配置都分配了更多位给小数部分:

  • sc_fixed<24,10,...>:小数位宽为24-10=14,精度达1/(2^14)=0.000061,远高于原始数据的精度需求;
  • sc_fixed<32,10,...>:小数位宽22,精度约0.000000238,几乎可以忽略量化误差;
  • sc_fixed<32,11,...>:小数位宽21,精度约0.000000477,同样满足高精度需求。

优化建议

针对这类小范围的陀螺仪数据(绝对值远小于1),应减少整数部分的位宽,把更多位资源分配给小数部分:

  1. 先评估数据范围:陀螺仪角速度通常不会过大,比如±2000°/s转换为弧度约±34.9 rad/s,仅需6位整数位(覆盖±63的范围)即可;
  2. 调整位宽配置:例如使用sc_fixed<16,2,SC_TRN,SC_SAT>,整数位2位(覆盖±1范围,足够匹配你的原始数据),小数位14位,精度可达0.000061,能精确表示你的原始陀螺仪数据;
  3. 若需要覆盖更大范围,可适当增加整数位,但优先保证小数位宽满足精度需求。

内容的提问来源于stack exchange,提问作者user3662181

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 18:53:27