万博1manbetx支持图表数据的操作
Stateflow®图表在仿真软件万博1manbetx®模型有一个动作语言属性定义的操作,您可以使用状态和转换操作。语言属性是:
MATLAB®作为动作语言。
C作为动作语言。
有关更多信息,请参见MATLAB和C之间的差异作为动作语言的语法。
二元运算
这个表总结了解释的所有二进制操作Stateflow图表根据他们的优先顺序(0 =最高,最低10 =)。二进制操作离开联想,这样,在任何表情,运营商具有相同优先级评估从左到右。评估其他操作的顺序是不确定的。例如,在这个任务
g = f () > ();
f ()
和g ()
是未指定的。可预测的结果,是良好的编程实践的表达式,取决于评价的顺序分割成多个语句。
操作 |
优先级 |
MATLAB作为动作语言 |
C作为动作语言 |
---|---|---|---|
0 |
权力。 |
权力。这个操作相当于C库函数 启用这个操作通过清算使c位操作图表属性。有关更多信息,请参见使c位操作。 |
|
1 |
乘法。 |
乘法。 |
|
1 |
部门。 |
部门。 |
|
1 |
余数。Noninteger操作数第一次把整数。 |
||
2 |
加法。 |
加法。 |
|
2 |
减法。 |
减法。 |
|
3 |
不受支持万博1manbetx的。使用 |
转变 |
|
3 |
不受支持万博1manbetx的。使用 |
转变 |
|
4 |
比较,大于。 |
比较,大于。 |
|
|
4 |
相比之下,不到。 |
相比之下,不到。 |
|
4 |
比较,大于或等于。 |
比较,大于或等于。 |
|
4 |
比较,小于或等于。 |
比较,小于或等于。 |
|
5 |
比较,等于。 |
比较,等于。 |
|
5 |
比较,不等于。 |
比较,不等于。 |
|
5 |
不受支持万博1manbetx的。使用操作 |
比较,不等于。 |
|
5 |
不受支持万博1manbetx的。使用操作 |
比较,不等于。 |
6 |
逻辑。位,使用 |
|
|
7 |
不受支持万博1manbetx的。位XOR,使用 |
位XOR(默认)。通过选择启用这个操作使c位操作图表属性。有关更多信息,请参见按位操作和使c位操作。 | |
8 |
逻辑或。按位或使用 |
|
|
9 |
逻辑。 |
逻辑。 |
|
10 |
逻辑或。 |
逻辑或。 |
一元操作和行动
这个表总结了所有一元操作的解释和行动在Stateflow图表。一元操作:
高于二元操作符的优先级。
是正确的关联,这样,在任何表达式,它们从右到左。
赋值操作
这张桌子在Stateflow图表总结了赋值操作的解释。
操作 |
MATLAB作为动作语言 |
C作为动作语言 |
---|---|---|
|
简单的任务。 |
简单的任务。 |
|
不受支持万博1manbetx的。使用类型转换操作覆盖定点促销规则。看到类型转换操作。 |
转让定点数字。看到在C图覆盖定点推广。 |
|
不受支持万博1manbetx的。使用表达式 |
相当于 |
|
不受支持万博1manbetx的。使用表达式 |
相当于 |
|
不受支持万博1manbetx的。使用表达式 |
相当于 |
|
不受支持万博1manbetx的。使用表达式 |
相当于 |
|
不受支持万博1manbetx的。使用表达式 |
相当于一个=方式 (位)。通过选择启用这个操作使c位操作图表属性。有关更多信息,请参见按位操作和使c位操作。 |
|
不受支持万博1manbetx的。使用表达式 |
相当于= ^ b (按位异或)。通过选择启用这个操作使c位操作图表属性。有关更多信息,请参见按位操作和使c位操作。 |
|
不受支持万博1manbetx的。使用表达式 |
相当于= | b (按位或)。通过选择启用这个操作使c位操作图表属性。有关更多信息,请参见按位操作和使c位操作。 |
类型转换操作
一个类型的值转换为一个值的另一种类型,使用类型转换操作。你可以把数据显式类型或另一个变量的类型。
显式数据类型
一个数值表达式转换为一个显式数据类型,使用MATLAB的类型转换函数形式:
< type_fun >(表达式)
< type_fun >
是一个类型转换函数,可以吗双
,单
,int32
,int16
,int8
,uint32
,uint16
,uint8
,或fi
(定点设计师)。< type_fun >
也可以布尔
,int64
,或uint64
。例如,这条语句表达式x + 3
一个16位的无符号整数,并赋予其价值数据y
:
y = uint16 (x + 3)
另外,图表中使用MATLAB作为行动的语言,您可以使用投
函数类型的关键字< type_key >
:
演员(表达式,< type_key >)
关键词类型包括“双”
,“单一”
,“int32”
,“int16”
,“int8”
,“uint32”
,“uint16”
,“uint8”
。例如,在前面的例子中,这个声明表达式x + 3
一个16位的无符号整数和分配y
:
y =投(x + 3,“uint16”)
根据其他数据类型
简化型铸造,您可以转换一个数值表达式的类型基于类型的其他数据。
图表中使用MATLAB作为动作语言,调用投
函数的关键字“喜欢”
。例如,这个声明的价值转换x + 3
相同类型的数据z
并分配到y
:
y =投(x + 3,“喜欢”,z)
z
任何可接受的Stateflow类型。
图表中使用C作为行动的语言,类型
操作符返回现有Stateflow数据的类型。使用这个返回值的显式类型投
操作。例如,这个声明的价值转换x + 3
相同类型的数据z
并分配到y
:
铸造(x + 3,类型(z))
按位操作
这个表总结了解释的逐位操作Stateflow图表,使用C作为行动的语言。
操作 |
描述 |
---|---|
a和b |
位和。 |
a | |
位或。 |
a ^ |
按位异或。 |
~一个 |
位没有。 |
|
转变一个 向右的b 位。 |
|
转变一个 左边的b 位。 |
除了移位操作a > >
和< < b
,您必须启用所有逐位操作通过选择使c位操作图表属性。看到使c位操作。
按位操作整数二进制级别的工作。Noninteger操作数第一次把整数。整型操作数遵循C促销规则来确定结果的中间值。这个中间值然后投您所指定的类型,操作的结果。
按位操作和整数溢出
分配使用的隐式铸逐位运算的中间值可以导致溢出。保存结果的最右边的部分,避免意想不到的行为,禁用图表属性浸透在整数溢出。
例如,图在这个模型中计算逐位运算y = ~你
。这个操作的图表计算中间值通过使用32位的整数目标大小,所以24左边的这个值都是国家的。当图表分配的中间值y
演员,uint8
导致一个整数溢出。每个图表的输出取决于图表处理整数溢出。
如果浸透在整数溢出启用,图表浸透逐位运算和输出的结果值为零。
如果浸透在整数溢出被禁用,图表将逐位运算和输出的结果其八个最右边的部分。
有关更多信息,请参见浸透在整数溢出。
指针和地址操作
这个表总结了指针和地址的解释业务Stateflow图表,使用C作为行动的语言。
操作 |
描述 |
---|---|
|
地址操作。使用自定义代码和Stateflow变量。 |
|
指针操作。只使用和自定义代码变量。 |
例如,模型sf_bus_demo
包含一个定制的C函数指针作为参数。当调用自定义代码函数的图表,它使用&
操作通过Stateflow数据地址。有关更多信息,请参见整合自定义结构Stateflow图表。
不支持指针和地址操作在图表,使用MATLAB作为行动的语言。万博1manbetx指向结构的指针应该只用于只读模式,只在调用中传递有效。
替换操作与应用程序的实现
如果你有嵌入式编码器®或万博1manbetx仿真软件编码器™,您可以配置代码生成器应用代码替换库(CRL)代码生成。更改代码生成器生成的代码的操作来满足应用需求。使用嵌入式编码器,可以开发和应用自定义代码替换库。
操作项的代码替换库可以指定积分或定点操作数和结果模式。您可以使用这些操作操作的条目:
除了
+
减法
- - - - - -
乘法
*
部门
/
例如,在这个表达式,可以取代加法操作符+
如果有针对性的实现u1
,u2
,y
类型,允许一个匹配的代码中添加条目替换库:
y = u1 + u2
C图的语义限制算子条目匹配,因为图表使用目标整数大小作为其在算术表达式的中间类型。例如,这个算术表达式计算中间添加到目标整数:
y = (u1 + u2) % 3
关于使用MathWorks代码替换库的更多信息®提供,请参阅什么是代码替换?(万博1manbetx仿真软件编码器)和代码替换库(万博1manbetx仿真软件编码器)。开发自定义代码替换库的信息,请参阅代码替换定制是什么?(嵌入式编码)和代码你可以取代从仿真软件模型万博1manbetx(嵌入式编码)。