01、电机基础知识--归一化

目录

1、归一化概念:

2、角度归一化:

2.1、角度都为正:

2.2、角度有正负:

3、正弦数据归一化:

4、定点小数格式

5、归一化总结

5.1、正小数

5.2、负小数

 5.3、归一化在程序中表示  

6、两个小数相乘归一化举例


 

1、归一化概念:

        就是要把需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。归一化的目的是为了我们后面数据处理的方便。

2、角度归一化:

2.1、角度都为正:

        一个周期内的电角度是0~360°,那么可以把0~360°的值变到0~1这个区间里,具体归一化方式为:

        归一化之后的值 = 实际的角度/360

        比如30°,归一化之后就变为:30/360 = 1/12 = 0.0833333333

2.2、角度有正负:

        如果角度的表示是±180°表示,那么归一化得到的值是-1~1这个区间,具体归一化方式为:

        归一化之后的值 = 实际角度/180

        比如60°,归一化之后就变为:60/180 = 1/3 = 0.33333333

3、正弦数据归一化:

        在一个电周期内,正弦值数据有正有负,变化范围在-1~1之间。16位有符号数表示的范围是-32768~32767,即0x8000~0x7fff。那么这里-32768表示为-1,32767表示为0.9999999。

        sin(-30°) = -0.5,这个值在正弦表中应该如何表示?(-1 / 2) * 32768 = -16384 

        sin(-60°) = 根号3/2,这个值在正弦表中应该如何表示? (1.732 / 2) * 32768 = 28377 

 

5a3e953fc44e401dbb5f734e0a02ac0f.png

 

4、定点小数格式

        归一化将一个数变到0~1或者-1~1,但是在0~1和-1~1之间都是小数,对于没有浮点运算单元的单片机来说,对小数进行数学运算会耗费大量的时间。

        归一化就是要将小数运算改成整数运算了,对于一般的单片机都内置了整数乘法单元,整数数学运算的速度会比小数数学运算快很多了。

        定点小数格式概念:约定单片机中所有数据的小数点位置是固定不变的,数据的最高位表示符号位,小数点是隐含在符号位之后的,这种格式通常被称为1.15或Q15格式,1.15中的1表示数据整数部分的位数,15表示小数部分的位数。

        如下图所示,对于一个16位的数来说,把最高位作为符号位,然后小数点是隐含在符号位后面的,剩余的15位作为数据位。

533b78e96a0b4fd3a84d4ca5d111a93c.png

5、归一化总结

5.1、正小数

         一个正的小数,可以用公式:16位有符号数表示的小数 = 对应的小数 * 32768

                例:16384 = 0.5*32768

5.2、负小数

        一个负的小数,可以用公式:16位有符号表示的小数 = 对应的小数 * 32768

                例:-19661 = -0.6 * 32768

 5.3、归一化在程序中表示  

        具体在程序里面角度的表示方法,可以用下列公式:

        ①、16位无符号数表示的角度 = (对应的角度数 / 360°)* 65535 无符号数的表示

                例:90°表示 16384 = (90 / 360) * 65535

        ②、16位有符号数来表示角度的话,0°~180°,0°~-180°,可以用下式表示:

        正数:16位有符号表示的角度 = (对应的角度数 / 180°) * 32767

                例:90°表示 16384 = (90/180) * 32768

        负数:16位有符号表示的角度 = (对应的角度数 / 180°) * 32768

                例:-90°表示 -16384 = (-90/180) * 32768

 

6、两个小数相乘归一化举例

6.1、两个归一化小数相乘归一化(无符号小数 * 有符号小数 = 有符号小数)

        两个归一化后的数,当成整数相乘后它的结果的归一化值就隐藏在结果的高16位部分。

        无符号小数 * 有符号小数 = 结果取归一化的高16位(这个16位按有符号小数计算)

①、比如32767*32767,前面一个32767相当于0.5(无符号小数),后面一个32767相当于1(有符号小数)。

        如果是小数相乘,那么得到的结果是0.5*1=0.5。

        用归一化后数相乘32767*32767 = 1073676298 = 0x3FFF0001,取高16位 = 0x3FFF = 16383 = 0.5(有符号小数)

②、比如32767*16383,前面一个32767相当于0.5(无符号小数),后面一个16383相当于0.5(有符号小数)。

        如果是小数相乘,那么得到的结果是0.5*0.5=0.25。

        用归一化后数相乘32767*16383 = 536,821,761= 0x1FFF4001,取高16位 = 0x1FFF = 8191 = 0.25(有符号小数)

 

 

 

  • 20
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值