赞
踩
以Matlab自带例子示例,走一遍定点化流程,并针对各种方法写总结。
open(‘pwm_intersective_filter’)
选取PWM_intersective子模块进行定点化工具使用。
1.第一步准备,记得保存、记录数据、数据命名、选取子系统。
2.第二步收集范围,选取双精度数据输入。
3.第三步手动设置参数,字长大小。小数长度默认是4,安全裕度是可以溢出,保护位。
You can also use this option for FPGA targets where you can choose any world length up to 128 bits.
4.最后点击应用数据类型。可以看到定点化已经应用上去了。(变体,挖坑)
5.结果定点前后对比,部分数据存在溢出。这些应该没有设置误差容限。
具体的数据前后对比图,绿色是自己设置误差容限,蓝色是浮点,红色是定点结果。
尽管定点化已经完成,但是还有一些坑没有填。
比如:fixdt(0,25,51)这种定点化方式很怪异。
尽管小数部分长度为 51 位,但由于总位宽为 25 位,这意味着实际数值会被截断或舍入,以适应总位宽的限制。下面是这个数据类型的一些特性:
- a = fi(3.141592653589793, 0, 25, 51);
- disp(a);
- disp(bin(a));
- disp(double(a));
这个输出展示了定点数的高精度小数表示,尽管只有 25 位总位宽,它依然能够非常精确地表示 pi。虽然 fixdt(0, 25, 51)
似乎有些不寻常,但它允许非常高的分辨率表示,用于表示非常小的数值。这种设置在某些精度要求极高的仿真或信号处理中非常有用。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。