定点数字使用整数,整数运算近似实数。他们是一种有效的方式进行计算,包括实数不需要浮点底层系统硬件的支持。金宝app
定点数字代表利用实数编码方案:
V≈V约=年代问+B。
V是一个精确的实际价值,你想用定点数近似。
V约是定点的结果的近似真实的值表示。
问是一个整数编码的定点数。这个值被称为量子化的整数。
年代是一个系数,确定定点表示的精度。这个值被称为坡。
B是一个附加校正称为偏见。
量子化的整数问是唯一定点表示法不同价值的一部分。生成的代码的数量年代和B是常数,只出现文字数字或表达式。如果一个定点数的变化,其量化的整数问修改,但年代和B保持不变。
确定量化的整数问对应于一个真实的价值V而圆的数量(V- - - - - -B)/年代一个整数。例如,代表数字V= 15.345在定点类型斜坡年代= 0.5和偏见B= 0.1,使用量化的整数
问=圆((V- - - - - -B)/年代一轮)= ((15.345 - 0.1)/ 0.5)= (30.49)= 30。
因为你轮问一个整数,你失去一些精度在代表数15.345。的数量问实际上代表的是
V约=年代问+B= 0.5⨉30 + 0.1 = 15.1。
使用定点数表示的整数和实数涉及一些精度的损失。然而,一个合适的选择年代和B,可以减少这个损失可以接受的水平。例如,通过改变编码方案年代= 0.25和B= 0.1,你可以表示数量V= 15.345与更大的精度:
问=圆((V- - - - - -B)/年代一轮)= ((15.345 - 0.1)/ 0.25)= (60.98)= 61
V约=年代问+B= 0.25⨉61 + 0.1 = 15.35。
之间的区别V约和V总是小于斜率年代。
在Model Explorer,您可以指定一个数据对象的定点编码助理,通过使用数据类型中描述定点数据属性。设置模式字段不动点
并指定这些属性:
Signedness:选择签署
或无符号
。
字长:指定包含这个词的一些大小量化的整数问。
扩展:选择二点
或斜率和偏见
。
如果您选择二点
助理显示的数据类型部分长度字段,指定二进制点位置。选择一个部分长度的n定义了一个定点编码的斜率年代= 2- - - - - -n和偏见B= 0。
如果您选择斜率和偏见
数据类型助理显示字段用于输入坡年代和偏见B定点编码方案。
此外,您可以指定一个定点数据对象的编码直接使用fixdt
(金宝app模型)函数。在模型浏览器属性检查器或,类型在其中的一个字段中,输入一个表达式格式:
fixdt (签署,字,FractionLength)
fixdt (签署,字,坡,偏见)
提示:
一些编码方案计算昂贵,特别是乘法和除法运算。选择一个斜坡,是2的整数次幂零偏压避免这些计算昂贵的指令。建议使用二进制扩展点。
Stateflow®图表将实数转换为定点数据在数据初始化和铸造操作在应用程序的一部分。这些转换计算一个量子化的整数问从一个实数输入。转换的类型取决于行动语言为图表。
在一个图表,使用MATLAB®作为动作语言,您定义的方法通过定点属性图转换。看到定点属性。
例如,如果您设置了MATLAB图表fimath
财产MATLAB一样
结果量化,那么图轮整数最近的整数值。
图表,使用C作为行动语言转换定点数据采用两种方法:
脱机转换在代码生成初始化数据。脱机转换是为了最大化的准确性。这些转换的结果量化整数最近的整数值。离线执行转换的初始化数据(变量和常量)Stateflow等级和MATLAB的工作区。
在线转换在运行时执行铸造操作。在线转换是为了计算效率最大化。他们是更快更有效,但不如脱机转换精确。而不是舍入问它最接近的整数,在线转换轮在地板上(除了部门,可以转到0,根据C编译器)。
例如,这个表展示了离线和在线转换之间的区别的实数定点数字定义的斜率年代= 24和偏见B= 0。为每一个真实的价值V,图表计算一个量子化的整数问通过舍入(V- - - - - -B)/年代到最近的整数(脱机转换)或在地板上(在网上转换)。对于每一个转换,V约=问年代+B是一种由贪婪导致的近似真实的价值问。
真实的价值 | 脱机转换 |
在线转换 |
|||
---|---|---|---|---|---|
V |
(V- - - - - -B)/年代 |
问 |
V约 |
问 |
V约 |
15.345 |
245.52 |
246年 |
15.375 |
245年 |
15.3125 |
3.45 |
55.2 |
55 |
3.4375 |
55 |
3.4375 |
1.0375 |
16.6 |
17 |
1.0625 |
16 |
1 |
2.06 |
32.96 |
33 |
2.0625 |
32 |
2 |
图表中使用C作为行动的语言,你可以避免显式类型转换利用定点上下文相关的常数。这些常数从上下文推断其类型的发生。他们像普通数字后缀写的C
或c
。例如,4.3摄氏度
和123.4摄氏度
是有效的定点在行动报表,您可以使用上下文相关的常量。
尽管定点上下文相关的常量可以出现在表达式与任何数据类型(包括整数和浮点数据),他们的主要用途是与定点数。该算法对上下文敏感的常数计算类型,提供最大的准确性没有溢出。该算法取决于:
表达式中操作
其他数据类型的上下文
的值不变
定点上下文相关的常量推断出它们的类型根据这些规则:
在铸造操作,不断的类型被铸造。
一个简单的赋值操作的形式a = b
:
如果b
是一个上下文敏感的常数,它有相同的类型一个
。
如果b
是一个加法或减法操作,然后不断有相同的类型作为另一个操作数。
如果b
是一个乘法或除法操作定点操作数,然后不断的类型为一个定点的结果提供了最好的精度,确定吗fixptbestexp
(金宝app模型)函数。
如果b
是一个乘法或除法操作浮点操作数的类型双
或单
,然后不断有相同类型的浮点操作数。
在一个特殊的赋值操作的形式a: b =
:
如果b
是一个上下文敏感的常数,它有相同的类型一个
。
如果b
是一个算术运算的浮点操作数类型双
或单
,或者如果一个
是一个浮点数据对象,然后不断有相同的类型为浮点数。
如果b
是一个加法或减法和定点操作数和操作吗一个
是一个定点数据对象,那么常数具有相同的类型一个
。
如果b
是一个乘法或除法和定点操作数和操作吗一个
是一个定点数据对象,然后不断的类型,提供了一个定点的结果最好的精度。
作为参数的函数调用,不断有相同的类型作为正式的参数。
你不能使用上下文敏感的常量作为二元运算的两个操作数或左边的操作数的赋值操作。
开发和测试您的应用程序通过使用双或单精度浮点数字。使用双或单精度浮点数没有限制的范围或精度计算。一旦应用程序是设计,你就可以开始用定点数据代替双精度数据。
在模型中配置参数对话框,硬件实现窗格中,为仿真环境设置整字大小的整数大小目标环境。Stateflow生成的代码使用这个整数的大小来选择类型为定点操作结果。看到硬件实现面板(金宝app模型)。
当你模拟模型,使用溢出检测警告你当一个定点操作的结果超过其定点类型的数字能力。在模型中配置参数对话框,诊断>数据的有效性窗格中,设置包装上溢出和浸透在溢出来错误
或警告
。如果你遇到在定点数据溢出错误,提高数据的范围:
增加了字长满溢的定点数据值。例如,改变用于编码的比特数的定点数据16 - 32。这个动作变化的基整数类型问从int16
来int32
。
减少了部分长度值(如果使用二点
缩放)或增加坡值(如果使用斜率和偏见
缩放)。例如,减少部分长度值从4比1(或者等价于增加坡值年代= 24= 0.0625来年代= 21= 0.5)。这一行动增加定点数据的范围,但减少可用的精度。
有关更多信息,请参见违反数据范围。
如果你遇到问题模型的行为源于精确定点数据不足,增加数据的精度提高部分长度值(如果使用二点
缩放)或减少坡值(如果使用斜率和偏见
缩放)。例如,增加部分长度值从2到3(或者等价,减少坡值年代= 22= 0.25来年代= 23= 0.125)。这一行动增加定点数据的精度,但减少可用的范围。
图表中使用C作为行动的语言,您可以使用一个特殊的赋值操作:=
和上下文相关的常数保持尽可能多的精度。看到在C图覆盖定点推广和定点上下文相关的常数。
请注意
如果不使用上下文相关的常数与定点类型,noninteger数值常量(常量有小数点)可以迫使定点操作产生浮点结果。
自动缩放工具可以更改设置Stateflow定点数据。你可以防止自动缩放通过选择锁数据类型设置定点对变化的工具选择定点数据对象。看到锁数据类型与定点的工具。方法在自动定量定点数据,请参阅选择一个范围收集方法(定点设计师)。
分享定点数据与仿真软件金宝app®模型:
使用相同的属性值来指定Stateflow图表中的数据,在仿真软件模型。金宝app对这种方法的一个例子分享从仿真软件模型输入数据,看看金宝app砰砰的枪声温度控制系统模型。
对于一些仿真软件模金宝app块,您可以指定直接输入或输出数据的类型。例如,您可以指定的定点数据类型常数块直接在输出数据类型现场使用fixdt
(金宝app模型)函数。
数据定义为输入或输出Stateflow图表和仿真软件模型中的指示发送或接收块继承其类型的图表数据。金宝app在许多块,您可以设置数据类型从驱动块通过继承,从下一个块或通过反向传播。你可以设置模型块匹配的数据类型的数据类型Stateflow它连金宝app接端口。
例如,您可以设置固定块从Stateflow继承它的类型模型的输入金宝app港口供应。设置输出数据类型块参数通过反向传播继承
。
Stateflow图表定义定点数据类型从您指定的值年代,B和基整数类型问。
对于每个定点数据,图表定义一个整数变量问在生成的代码。这个整数是唯一的定点数的一部分价值的变化。可用的基本类型问无符号整数类型吗uint8
,uint16
,uint32
,带符号整数类型int8
,int16
,int32
。如果一个定点数的斜率年代= 1和偏见B= 0,它相当于量子化的整数问整数类型和行为完全作为基地。
斜率年代考虑到是一个系数吗F1≤F< 2和2的整数次幂指数E:
年代=F⨉2E。
如果部分的斜率F大于1,它转换为定点数。编码方案与F> 1可以计算昂贵,特别是在乘法和除法运算。设置F= 1避免这些计算昂贵的指令。在此设置,缩放2的乘方被实现为转移,这是更有效的比乘法指令。因此,使用binary-point-only缩放,F= 1,B= 0,推荐。
操作实现定点类型与解决方案中描述的量子化的整数金宝搏官方网站定点数据的算术运算。生成高效的代码,定点推广规则选择值斜率和偏见,取消困难方面的解决方案。金宝搏官方网站看到晋升为定点操作规则。
fixdt
(金宝app模型)|fixptbestexp
(金宝app模型)