主要内容

万博1manbetx支持图表数据的操作

Stateflow®图表在仿真软件万博1manbetx®模型有一个动作语言属性定义的操作,您可以使用状态和转换操作。语言属性是:

  • MATLAB®作为动作语言。

  • C作为动作语言。

有关更多信息,请参见MATLAB和C之间的差异作为动作语言的语法

二元运算

这个表总结了解释的所有二进制操作Stateflow图表根据他们的优先顺序(0 =最高,最低10 =)。二进制操作离开联想,这样,在任何表情,运营商具有相同优先级评估从左到右。评估其他操作的顺序是不确定的。例如,在这个任务

g = f () > ();
评价的顺序f ()g ()是未指定的。可预测的结果,是良好的编程实践的表达式,取决于评价的顺序分割成多个语句。

操作

优先级

MATLAB作为动作语言

C作为动作语言

a ^

0

权力。

权力。这个操作相当于C库函数战俘。操作数是第一个浮点数的演员。有关更多信息,请参见调用C库函数

启用这个操作通过清算使c位操作图表属性。有关更多信息,请参见使c位操作

a * b

1

乘法。

乘法。

a / b

1

部门。

部门。

% % b

1

不受支持万博1manbetx的。使用快速眼动国防部函数。

余数。Noninteger操作数第一次把整数。

a + b

2

加法。

加法。

a - b

2

减法。

减法。

a > >

3

不受支持万博1manbetx的。使用bitshift函数。

转变一个向右的b位。有关更多信息,请参见按位操作

< < b

3

不受支持万博1manbetx的。使用bitshift函数。

转变一个左边的b位。有关更多信息,请参见按位操作

a >

4

比较,大于。

比较,大于。

< b

4

相比之下,不到。

相比之下,不到。

a > =

4

比较,大于或等于。

比较,大于或等于。

< = b

4

比较,小于或等于。

比较,小于或等于。

a = =

5

比较,等于。

比较,等于。

~ = b

5

比较,不等于。

比较,不等于。

一个= b !

5

不受支持万博1manbetx的。使用操作~ = b

比较,不等于。

< > b

5

不受支持万博1manbetx的。使用操作~ = b

比较,不等于。

a和b

6

逻辑。位,使用bitand函数。

  • 位和(默认)。通过选择启用这个操作使c位操作图表属性。

  • 逻辑。启用这个操作通过清算使c位操作图表属性。

有关更多信息,请参见按位操作使c位操作

a ^

7

不受支持万博1manbetx的。位XOR,使用bitxor函数。

位XOR(默认)。通过选择启用这个操作使c位操作图表属性。有关更多信息,请参见按位操作使c位操作

a |

8

逻辑或。按位或使用bitor函数。

  • 按位或(默认)。通过选择启用这个操作使c位操作图表属性。

  • 逻辑或。启用这个操作通过清算使c位操作图表属性。

有关更多信息,请参见按位操作使c位操作

& & b

9

逻辑。

逻辑。

一个| | b

10

逻辑或。

逻辑或。

一元操作和行动

这个表总结了所有一元操作的解释和行动在Stateflow图表。一元操作:

  • 高于二元操作符的优先级。

  • 是正确的关联,这样,在任何表达式,它们从右到左。

操作

MATLAB作为动作语言

C作为动作语言

~一个

逻辑。位不使用bitcmp函数。

  • 位(默认)。通过选择启用这个操作使c位操作图表属性。

  • 逻辑。启用这个操作通过清算使c位操作图表属性。

有关更多信息,请参见按位操作使c位操作

!

不受支持万博1manbetx的。使用操作~一个

逻辑。

——一个

负的。

负的。

+ +

不受支持万博1manbetx的。使用表达式= + 1

增量。相当于= + 1

一个,

不受支持万博1manbetx的。使用表达式a = a - 1

减量。相当于a = a - 1

赋值操作

这张桌子在Stateflow图表总结了赋值操作的解释。

操作

MATLAB作为动作语言

C作为动作语言

a = b

简单的任务。

简单的任务。

a: b =

不受支持万博1manbetx的。使用类型转换操作覆盖定点促销规则。看到类型转换操作

转让定点数字。看到在C图覆盖定点推广

+ = b

不受支持万博1manbetx的。使用表达式一个= a + b

相当于一个= a + b

a - b =

不受支持万博1manbetx的。使用表达式一个= a - b

相当于一个= a - b

* = b

不受支持万博1manbetx的。使用表达式= a * b

相当于= a * b

a / b =

不受支持万博1manbetx的。使用表达式一个= a / b

相当于一个= a / b

& = b

不受支持万博1manbetx的。使用表达式一个= bitand (a, b)

相当于一个=方式(位)。通过选择启用这个操作使c位操作图表属性。有关更多信息,请参见按位操作使c位操作

^ = b

不受支持万博1manbetx的。使用表达式一个= bitxor (a, b)

相当于= ^ b(按位异或)。通过选择启用这个操作使c位操作图表属性。有关更多信息,请参见按位操作使c位操作

| = b

不受支持万博1manbetx的。使用表达式一个= bitor (a, b)

相当于= | 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 ^ 按位异或。
~一个 位没有。

a > >

转变一个向右的b位。

< < b

转变一个左边的b位。

除了移位操作a > >< < b,您必须启用所有逐位操作通过选择使c位操作图表属性。看到使c位操作

按位操作整数二进制级别的工作。Noninteger操作数第一次把整数。整型操作数遵循C促销规则来确定结果的中间值。这个中间值然后投您所指定的类型,操作的结果。

请注意

按位操作不支持图表,使用MATLAB作为行动的语言。万博1manbetx相反,使用功能bitand,bitor,bitxor,bitnot,或bitshift

按位操作和整数溢出

分配使用的隐式铸逐位运算的中间值可以导致溢出。保存结果的最右边的部分,避免意想不到的行为,禁用图表属性浸透在整数溢出

例如,图在这个模型中计算逐位运算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
如果目标整数大小是32位,那么你不能用加法操作符替换这个表达式的代码替换库和生产没有签署了16位结果精度的损失。

关于使用MathWorks代码替换库的更多信息®提供,请参阅什么是代码替换?(万博1manbetx仿真软件编码器)代码替换库(万博1manbetx仿真软件编码器)。开发自定义代码替换库的信息,请参阅代码替换定制是什么?(嵌入式编码)代码你可以取代从仿真软件模型万博1manbetx(嵌入式编码)

相关的话题