本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

使用 MATLAB 和 C 作为动作语言语法时的差异

Simulink® 模型中的 Stateflow® 图具有一个动作语言属性,该属性定义状态和转移动作的语法。图的画布左下角的图标表示该图的动作语言。

  • MATLAB® 作为动作语言。

  • C 语言作为动作语言。

MATLAB 是新 Stateflow 图的默认动作语言语法。要创建使用 C 语言作为动作语言的图,请输入:

sfnew -c

比较动作语言的功能

下表列出了两种动作语言之间最显著的功能差异。

功能MATLAB 作为动作语言C 作为动作语言

向量和矩阵索引

以圆括号括起并以逗号分隔的从 1 开始的索引。例如 A(4,5)。请参阅支持的向量和矩阵运算

以方括号括起的从 0 开始的索引。例如 A[3][4]。请参阅支持的向量和矩阵运算

C 构造:

  • 递增与递减操作 a++a--

  • 赋值操作 a += ba –= ba *= ba /= b

  • 求值运算 a != b!a

  • 二元运算 a %% ba >> ba << ba & ba | b

  • 注释标记 ///* */

自动更正为 MATLAB 语法。例如,a++ 更正为 a = a+1。请参阅Auto Correction When Using MATLAB as the Action Language

支持。请参阅支持的 Stateflow 图数据运算

状态动作中的条件和循环控制语句

支持。例如,您可以在状态动作中使用 ifforwhile 语句。请参阅循环及条件语句 (MATLAB)。

不支持。对于条件模式和循环模式,请改用图形函数。请参阅通过定义图形函数重用逻辑模式

转移动作的格式

自动更正会用花括号 {} 将转移动作括起来。请参阅转移动作

不需要用花括号 {} 将转移动作括起来。请参阅转移动作

并行状态的排序

仅显式排序。请参阅并行状态的执行顺序

显式或隐式排序。请参阅并行状态的执行顺序

整数数据类型

32 位、16 位或 8 位有符号和无符号整数。

64 位、32 位、16 位或 8 位有符号和无符号整数。

64 位整数实现为定点数:

  • int64fixdt(1,64,0) 的别名类型。

  • uint64fixdt(0,64,0) 的别名类型。

定点构造:

  • 特殊赋值运算符 :=

  • 上下文相关常量,例如 4.3C

不支持。

支持。请参阅Override Fixed-Point Promotion in C ChartsFixed-Point Context-Sensitive Constants

复数数据

使用复数表示法 a + bicomplex 运算符。请参阅Supported Operations for Complex Data

使用 complex 运算符。不支持复数表示法。请参阅Supported Operations for Complex Data

数据类型传播

遵循 MATLAB 定型规则。例如,将类型为·double 的数据与类型为·int32 的数据相加会得到类型为·int32 的数据。

遵循 C 语言定型规则。例如,将类型为·double 的数据与类型为·int32 的数据相加会得到类型为·double 的数据。

显式类型转换运算

使用以下转换形式之一:

  • MATLAB 类型转换函数。例如 single(x)

  • 具有类型关键字的 cast 函数。例如 cast(x,'int8')

  • 具有 'like' 关键字的 cast 函数。例如 cast(x,'like',z)

不支持 type 运算符。请参阅类型转换运算

使用以下转换形式之一:

  • MATLAB 类型转换函数。例如 uint16(x)

  • 具有 type 运算符的 cast 函数。例如 cast(x,type(z))

不支持对 cast 函数使用类型关键字。请参阅类型转换运算

标量扩展

不支持。

支持。请参阅为矩阵的所有元素赋值
字符串数据

不支持。

支持。请参阅Manage Textual Information by Using Strings

数据属性的设定:

  • First index

  • Save final value to base workspace

  • Units

不支持。

支持。有关详细信息,请参阅:

图形函数、真值表函数和 MATLAB 函数中的数据作用域

ConstantParameterInputOutputLocalConstantParameterInputOutputTemporary

圆点表示法,用于指定 MATLAB 函数内的状态、本地数据、消息和本地事件

支持。请参阅使用圆点表示法标识数据

不支持。

自定义代码函数和变量

行为取决于 Import Custom Code 配置参数。

  • Import Custom Code 打开时,状态和转移既支持自定义代码函数,也支持自定义代码变量(默认值)。

  • Import Custom Code 关闭时,仅支持自定义代码函数。Use the coder.cevalfunction.

请参阅自定义代码Import custom code (Simulink)。

状态和转移既支持自定义代码函数,也支持自定义代码变量。

生成代码中的行优先数组布局

不支持。

支持。请参阅Row-Major Array Layout

生成代码中的多维数组布局

不支持。

在本地数据中支持。请参阅Multidimensional Array Layout

结构体参数

支持可调参数和不可调参数。

仅支持可调参数。

使用全局 fimath 对象

支持。

不支持。

另请参阅

相关主题