概述
规则ID:db、jm、hd、ar被用于Ver 1.0的规范。na和jc用于从版本2.0到现在创建的规范
NA-MAAB代表北美和欧洲。J-MAAB代表日本
Matlab建模规范主要和matlab function相关
文章目录
- MATLAB
- MATLAB外观
- na_0018: 嵌套的if/else和case语句数
- 规则:
- 原因:
- na_0025:MATLAB函数头
- 规则:
- 原因:
- MATLAB 数据和操作
- na_0024:MATLAB函数中的共享数据
- 规则:
- 原因
- na_0031:默认枚举值的定义
- 规则:
- 原因
- na_0034:MATLAB Function块输入输出设置
- 规则:
- 原因
- MATLAB使用
- na_0016:MATALAB Functions的文件长度
- 规则:
- 原因
- na_0017:调用的函数级别数
- 规则:
- 原因
- na_0021:MATLAB函数中的字符串
- 规则:
- 原因
- na_0022:Switch/Case语句的推荐用法
- 规则:
- 原因
- jc_0801:禁止使用 /* 和 * / 注释符号
- 原因
- 词汇表
MATLAB
MATLAB外观
na_0018: 嵌套的if/else和case语句数
规则建议:
NA-MAAB: a
JMAAB: 不支持
Matlab版本:all
规则:
a:嵌套if /else和case语句的级别数应受到限制,通常为三个级别。
原因:
a:提高可读性 可能无法生成代码。
na_0025:MATLAB函数头
规则建议:
NA-MAAB: a
JMAAB: 不支持
Matlab版本:all
规则:
a:[MATLAB Functions]]应具有描述性标题。标题中的信息可以包括但不限于:
•函数名称•功能描述•假设和限制•与以前版本的更改描述•输入和输出列表
原因:
a:提高可读性、模型仿真、可测试性和工作流 可能无法生成代码。
MATLAB 数据和操作
na_0024:MATLAB函数中的共享数据
规则建议:
NA-MAAB: a
JMAAB: 不支持
Matlab版本:all
规则:
a:信号线应用于连接MATLAB Functions之间共享的数据。 不建议使用data store
function ErrorFlag =
EngineFaultEvaluation(EngineData,ErrorFlag_In)
%#codegen
RPM_HIGH = 10000;
RPM_LOW = 10;
HIGHRPMFAULT = 2^1;
LOWRPMFAULT = 2^2;
ErrorFlag = ErrorFlag_In;
if EngineData > RPM_HIGH
ErrorFlag = bitor(ErrorFlag,HIGHRPMFAULT);
end
if EngineData < RPM_LOW
ErrorFlag = bitor(ErrorFlag,LOWRPMFAULT);
end
end
function ErrorFlag = WheelFaultEvaluation(WheelData,ErrorFlag_In)
%#codegen
SLIP_HIGH = 1000;
WHEELSLIP = 2^3;
ErrorFlag = ErrorFlag_In;
if WheelData > SLIP_HIGH
ErrorFlag = bitor(ErrorFlag,WHEELSLIP);
end
end
【不正确】应用规则时不能使用此类型的图案。
function EngineFaultEvaluation(EngineData)
%#codegen
global ErrorFlag_DataStore
RPM_HIGH = 10000;
RPM_LOW = 10;
HIGHRPMFAULT = 2^1;
LOWRPMFAULT = 2^2;
if EngineData > RPM_HIGH
ErrorFlag_DataStore =
bitor(ErrorFlag_DataStore,HIGHRPMFAULT);
end
if EngineData < RPM_LOW
ErrorFlag_DataStore =
bitor(ErrorFlag_DataStore,LOWRPMFAULT);
function WheelFaultEvaluation(WheelData)
%#codegen
global ErrorFlag_DataStore
SLIP_HIGH = 1000;
WHEELSLIP = 2^3;
if WheelData > SLIP_HIGH
ErrorFlag_DataStore =
bitor(ErrorFlag_DataStore,WHEELSLIP);
end
原因
a:使用data store时,数据流的可读性会降低,并可能导致更新引用计时出错。
na_0031:默认枚举值的定义
规则建议:
NA-MAAB: a
JMAAB: a
Matlab版本:all
规则:
a:方法getDefaultValue应用于显式定义枚举的默认值。
也就是说需要定义枚举时需要定义一个getDefaultValue函数来获取默认值
原因
a:当枚举类型没有明确定义的默认值时,所描述的第一个枚举字符串将被定义为默认值,这可能与预期不同。
na_0034:MATLAB Function块输入输出设置
规则建议:
NA-MAAB: a
JMAAB: a
Matlab版本:all
规则:
a:应为[MATLAB Function]的所有输入和输出在model explorer中定义数据类型。
原因
a:为[MATLAB Function]的所有输入和输出定义数据类型有助于防止仿真错误和意外行为。
MATLAB使用
na_0016:MATALAB Functions的文件长度
规则建议:
NA-MAAB: a
JMAAB: 不支持
Matlab版本:all
规则:
a:应限制MATLAB Functions的长度。此限制适用于位于Simulink方框图中的MATLAB Functions和外部MATLAB的.m文件。
建议限制为60行代码。子功能可能会使用额外的60行代码。
原因
a:提高可读性和工作流 可能无法生成代码。
na_0017:调用的函数级别数
规则建议:
NA-MAAB: a
JMAAB: 不支持
Matlab版本:all
规则:
a: 子功能级别的数量应受到限制,通常为三个级别
位于Simulink方框图级别的MATLAB功能块将被视为第一级,除非它只是一个外部MATLABm文件。
这包括在MATLAB块中定义的函数和在单独的m文件定义的函数。
标准实用程序函数(如sqrt或log等内置函数)不包含在级别数中。同样,常用的自定义实用程序函数也可以从级别数中排除。
原因
a: 提高可读性和可测试性
na_0021:MATLAB函数中的字符串
规则建议:
NA-MAAB: a
JMAAB: a
Matlab版本:all
规则:
a:MATLAB函数中不得使用字符串赋值语句。
【错误】MATLAB函数中正在使用字符串赋值语句。
原因
a: MATLAB函数将字符串存储为字符数组。因此,在同一变量中存储不同长度的字符串不支持动态内存分配,这会阻止存储字符串。(在[Switch Case]中使用字符串时,请考虑使用枚举类型)
na_0022:Switch/Case语句的推荐用法
规则建议:
NA-MAAB: a
JMAAB: 不支持
Matlab版本:all
规则:
a: Switch/Case语句应为“Case”参数使用常量值。“Case”参数中不得使用输入变量。
正确:
原因
a:提高了模型仿真和可测试性。 可能无法生成代码。
jc_0801:禁止使用 /* 和 * / 注释符号
由于注释符号/* 和 * / 在生成的代码中自动分配,因此符号不得用于: cgt文件 mpt信号描述 mpt参数说明
原因
a:注释会自动生成,重复注释可能导致生成代码异常
词汇表
本节对指南中使用的术语进行了阐明。
术语 | 定义 |
---|---|
Parameters | 当尚未进行修改时,此术语指的是在基本工作区/模型工作区中定义的常量。 |
Built-in MATLAB functions | MATLAB函数和脚本 |
Block | 所有模块(类型=模块),包括:•子系统•模型•图表(除非另有说明)。标准Simulink库块分为两类:•基本块•结构子系统 |
Basic Blocks | 标准Simulink库中的内置块。具有未定义内部处理的块(如子系统)不被视为基本块。基本块可以包括: |
Structural subsystem | [Subsystems], [models], [charts], and [MATLAB functions] 是用于定义结构的框架,具有用户定义的内部处理的块。 |
Subsystem | 子系统,由一个或多个模块组成 |
Conditional subsystem | 具有条件输入端口的子系统。 |
Atomic subsystem | 一种{BlockType},它是一个“子系统”,将结构子系统作为单个单元执行。Conditional subsystem、 [Chart], and [MATLAB Function]被视为原子子系统。 |
Port label name | 结构子系统的输入/输出端口标签。默认情况下,[输入端口]和[输出端口]块的名称放置在子系统中。默认情况下,将显示Stateflow输入/输出数据的名称。屏蔽子系统时,可以更改显示选项 |
Conditional input block | Includes [Trigger], [Enable], [Function Call], and [Reset]. |
Delay block | 两层含义:1。放置在循环路由中的上一个值参考块,用于消除代数环。使用 [Unit Delay] and [Memory]. 。(稍后从R201b开始)[延迟]块也可以使用 2。保留过去值的块。使用[Unit Delay], [Memory], [Delay], and [Tapped Delay] |
Calculation block | 执行加法和减法运算的具有“Sum”{BlockType}的块。包括[Sum], [Add], [Subtract], and [Sum of Elements]. |
Multiplication and division block | 具有执行除法和乘法运算的““Product””{BlockType}的块。包括 [Product], [Divide] and [Product of Elements]. |
Stateflow block | Includes [Chart], [State Transition Table], and [Truth Table]. |
Flow chart | stateflow中的信号跳转流 |
State action type | 基本状态动作类型和组合状态动作类型。Basic state action types and combined state action types. |
Basic state action type | Types include entry(en), during(du), and exit(ex). |
Combined state action type | 两种或两种以上的基本状态动作类型的组合 • entry(en), during(du) • during(du), exit(ex) • entry(en), exit(ex) • entry(en), during(du), exit(ex) |
State | stateflow中的状态。 |
最后
以上就是开心芹菜为你收集整理的MAB建模规范-Matlab建模规范MATLAB词汇表的全部内容,希望文章能够帮你解决MAB建模规范-Matlab建模规范MATLAB词汇表所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复