编写真值表

在创建新真值表后,您就可以对它进行编写以根据您的设定执行。要编写真值表,您需要添加条件、决策和动作。有关创建真值表的详细信息,请参阅使用真值表对组合逻辑建模。

真值表仅在 Simulink® 模型中受支持。有关详细信息,请参阅使用真值表对组合逻辑建模。打开真值表进行编辑

在 Stateflow 图或 Simulink 模型中创建真值表并为其添加标签后,可以指定其逻辑行为。这些设定同时适用于 Simulink 模型中的真值表模块和 Stateflow® 图中的真值表函数。在此示例中,您指定一个真值表函数的行为。

要打开该真值表,请双击您在使用真值表对组合逻辑建模中创建的真值表函数 ttable。

默认情况下,真值表包含一个 Condition Table 和一个 Action Table,二者各有一行。Condition Table 还包含一个决策列 D1 和一个动作行。选择动作语言

如果真值表位于使用 C 语言作为动作语言的 Stateflow 图中,则您可以为您的 Stateflow 真值表指定动作语言:

打开 Property Inspector。在 Modeling 选项卡中的 Design 下,选择 Property Inspector。

在 Properties 部分下,选择 C 或 MATLAB 作为动作语言。

使用 C 语言作为动作语言的 Stateflow 图中的真值表也必须使用 C 语言作为动作语言。输入真值表条件

条件是在真值表中指定逻辑行为的起点。打开您的新真值表 ttable 进行编辑。从指定条件开始编写 ttable 的行为。

在 Condition Table 的 Condition 列中输入条件。对于所输入的每个条件,可以在 Description 列输入可选说明。要为真值表 ttable 输入条件:

点击您要追加新行的 Condition Table。

点击侧面板上的 Append Row 按钮 两次。

真值表会在 Condition Table 中底部追加两个空行。

点击并拉动分隔 Condition Table 窗格与 Action Table 窗格的横条,使 Condition Table 窗格变大。

在 Condition Table 中,点击 Description 列顶部的单元格。

带闪烁文本的光标会高亮显示在该单元格中。

输入以下文本:

x is equal to 1

条件说明是可选的,但是会作为备注显示在真值表的生成代码中。

点击其右侧 Condition 列中的相邻单元格。

在 Condition 列的第一个单元格中,输入:

XEQ1:

此文本是可以包括在条件中的可选标签。每个标签必须以字母字符 ([a-z][A-Z]) 开始,后接任意数量的字母数字字符 ([a-z][A-Z][0-9]) 或下划线 (_)。

按 Enter 键输入以下文本:

x == 1

此文本是真正的条件。所输入的每个条件的计算结果必须为零 (false) 或非零 (true)。您可以根据需要在条件中使用可选括号(例如 [x == 1])。

在真值表条件中,您可以使用通过真值表函数的参数传递给真值表函数的数据。前面的条件测试参数 x 是否等于 1。您也可以使用为真值表的父对象(包括图)定义的数据。

重复之前的步骤输入其他两个条件。

输入真值表决策

每个决策列(D1、D2 等)通过 AND 关系运算符将一组条件结果绑定到一起形成一个决策。决策中条件结果的可能值包括 T (true)、F (false) 和 -(true 或 false)。在输入真值表条件中,您已为真值表 ttable 输入了条件。接下来继续在决策列中输入值:

点击 Condition Table 中要追加新列的决策列。

点击侧面板上的 Append Column 按钮 三次。

点击决策列 D1 顶部的单元格。

按空格建,直到出现值 T。

按空格建可以在可能的值 F、T 和 - 之间切换。您还可以直接输入这些字符。按 1 会将值设置为 T,按 0 会将值设置为 F。按 x 会将值设为 -。

为决策列输入其余值:

真值表执行期间,会按从左至右的顺序进行决策测试。决策内各个条件结果的测试顺序未定义。真值表会按从上到下的顺序对每个决策的条件进行计算(首先是条件 1,然后是条件 2,以此类推)。由于这一实现在以后可能会有变化,因此请不要依赖某个特定的计算顺序。默认决策列

ttable 最后一个决策列 D4 是此真值表的默认决策。该默认决策涵盖了之前的决策列中未测试到的其他所有决策。通过在最右侧决策列的每个单元格中输入来创建一个默认决策。这个输入条目代表条件的任何结果,T 或 F。默认决策列必须是 Condition Table 右侧的最后一列。输入真值表动作

真值表执行期间,会按从左至右的顺序进行决策测试。当实际结果与某一决策匹配时,即会执行在 Action Table 的 Actions 行中为该决策列指定的动作。然后,结束并退出真值表的执行。

在输入真值表决策中,您已为真值表输入了决策。下一步是在 Action Table 中为每个决策输入要发生的动作。稍后,再将这些动作分配给 Condition Table 的 Actions 行中与之对应的决策。设置 Action Table

点击您要追加新行的 Action Table。

点击侧面板上的 Append Row 按钮 三次。

对真值表的动作进行编程。对真值表的动作进行编程

对于使用 MATLAB® 作为动作语言的真值表,可以用 MATLAB 代码来编写动作。使用此代码,可以直接添加控制流逻辑并调用 MATLAB 函数。在下面的步骤中,您将使用 MATLAB 语法的以下功能在真值表 ttable 中编写动作:

持久变量

if ... else ... end 控制流

for 循环

请按照以下步骤操作:

点击 Action Table Description 列顶部的单元格。

带闪烁文本的光标会高亮显示在该单元格中。

输入以下描述:

Maintain a counter and a circular

vector of values of length 6.

Every time this action is called,

output r takes the next value of

the vector.

动作说明是可选的,但是会作为备注显示在真值表的生成代码中。

按向右箭头键选择其右侧 Action 列中的相邻单元格。

输入下列文本:

A1:

先为动作输入可选标签,后接冒号 (:)。稍后,您要在 Condition Table 的 Actions 行中输入这些标签,以为每个决策列指定一个动作。与条件标签一样,动作标签必须以字母字符 ([a-z][A-Z]) 开始,后接任意数量的字母数字字符 ([a-z][A-Z][0-9]) 或下划线 (_)。

按 Enter 键并输入以下文本:

persistent values counter;

cycle = 6;

coder.extrinsic('plot');

if isempty(counter)

% Initialize counter to be zero

counter = 0;

else

% Otherwise, increment counter

counter = counter + 1;

end

if isempty(values)

% Values is a vector of 1 to cycle

values = zeros(1, cycle);

for i = 1:cycle

values(i) = i;

end

% For debugging purposes, call the MATLAB

% function "plot" to show values

plot(values);

end

% Output r takes the next value in values vector

r = values( mod(counter, cycle) + 1);

在真值表动作中,您可以使用通过真值表函数的参数和返回值传递给真值表函数的数据。前面的动作将返回值 r 设为等于向量 values 中的下一个值。您也可以使用为真值表的父对象(包括 Stateflow 图)定义的数据来指定动作。真值表动作也可以广播或发送为真值表或其父级(如 Stateflow 图本身)定义的事件。

在 Action Table 中输入其余的动作,如下所示:

如果在仿真期间执行动作 A1,则会显示包含 values 向量数据的绘图:

现在,您已准备就绪,可以将动作分配给决策。将真值表动作分配给决策

您必须为 Condition Table 中的每个决策分配至少一个 Action Table 中的动作。真值表使用此关联来确定决策测试结果为 true 时要执行的动作。为决策分配动作的规则

为真值表中的决策分配动作时,适用以下规则:

您可以通过在决策列的 Actions 行单元格中输入动作的行号或标签,来为决策指定动作。

如果使用标签来指定动作,则 Action Table 中的该动作必须具有标签。

必须为每个决策指定至少一个动作。

决策的动作是必不可少的。每个决策至少要有一个动作设定符,指向 Action Table 中的动作。如果不想为决策指定动作,可以指定一个不包含任何动作语句的行。

您可以为决策指定多个动作,以逗号、分号或空格分隔。

例如,对于决策列 D1,您可以指定 A1,A2,A3 或 1;2;3,以在决策 D1 为 true 时,执行前三个动作。

您可以按任意顺序混合使用行号和标签操作设定符。

下面的示例同时使用行号和标签这两种动作设定符。

您可以为多个决策指定同一动作,如下所示:

Condition Table 的 Actions 行中的行号动作设定符会根据 Action Table 中行顺序的变化自动进行调整。如何将动作分配给决策

此部分说明如何将动作分配给真值表 ttable 中的决策。在本示例中,每个决策列的 Actions 行单元格都包含一个为 Action Table 中的动作所指定的标签。请按照以下步骤操作:

点击决策列 D1 底部的单元格,即 Condition Table 中 Actions 行的第一个单元格。

为决策列 D1 输入动作设定符 A1。

当 D1 为 true 时,执行 Action Table 中的动作 A1。

为其余决策列输入动作设定符:

现在,您已准备就绪,可以执行编写真值表的最后一步。添加初始动作和最终动作

除了为决策指定动作外,您还可以为真值表函数添加初始动作和最终动作。初始动作指定任何决策测试发生之前执行的动作。最终动作指定在退出真值表之前作为最后一个动作执行的动作。要为真值表指定初始动作和最终动作,在 Action Table 中使用动作标签 INIT 和 FINAL。

通过以下步骤添加初始动作和最终动作,以在真值表 ttable 的执行前后于 MATLAB 命令行窗口中显示诊断消息。

在真值表中,右键点击 Action Table 的第 1 行,然后选择 Insert Row。

Action Table 顶部会出现一个空行。

在 Modeling 选项卡中,选择 Append Row。

Action Table 底部会出现一个空行。

点击并拖拉真值表边框底部,以显示 Action Table 的全部六行:

按如下所示,在第 1 行添加初始动作:

Description动作初始动作:

显示消息INIT:

coder.extrinsic('disp');

disp('truth

table ttable entered');

按如下所示,在第 6 行添加最终动作:

Description动作最终动作:

显示消息FINAL:

coder.extrinsic('disp');

disp('truth

table ttable exited');

虽然前面真值表示例中的初始动作和最终动作出现在 Action Table 的第一行和最后一行,不过您实际上可以将这些操作输入到任意行。您也可以使用 Condition Table 的 Actions 行中的动作设定符 INIT 或 FINAL 来为决策分配初始动作和最终动作。为真值表生成内容

当您对模型进行仿真后,Stateflow 会为您的真值表生成内容。要查看生成的内容,请点击 View Generated Content 按钮。对于使用 C 语言作为动作语言的真值表,内容是以图形函数的形式生成的。对于使用 MATLAB 作为动作语言的真值表,内容是以 MATLAB 代码的形式生成的。有关详细信息,请参阅 View Generated Content for Stateflow Truth Tables。

相关主题

如何用MATLAB绘制真值表,编写真值表 - MATLAB Simulink - MathWorks 中国相关推荐

  1. matlab ploty,matlab绘制函数 如何利用matlab的ploty

    最近有网友提出"matlab绘制函数 如何利用matlab的ploty"等问题,小小知识站提取了各大知名网站有关"matlab绘制函数 如何利用matlab的ploty& ...

  2. matlab yticklable,Matlab绘制XTickLabel有效字符串(Matlab Plot XTickLabel valid strings)

    Matlab绘制XTickLabel有效字符串(Matlab Plot XTickLabel valid strings) 我有一个情节: x = [0 1 2 3]; y = [0 0 1 1]; ...

  3. matlab绘制世界地图(含国界)、中国地图(含省界),可下载m_map和shp文件

    matlab绘制世界地图(含国界).中国地图(含省界),可下载m_map和shp文件 1.m_map安装包下载和官方网址 2.绘制世界地图(包含国界和不含国界) 3.绘制中国地图(包含省界) 本人习惯 ...

  4. matlab 绘制符号函数,DAY8 MATLAB学习笔记—simulink入门、MATLAB符号函数的图形绘制...

    如何打开simulink: 启动simulink: 先打开MATLAB软件界面 第一步打开simulink 第二步在command windows输入 simulink然后enter,等待 有很多模块 ...

  5. matlab绘制三维球体,使用Matlab绘制三维圆柱体和球体

    使用Cylinder功能函数绘制圆柱体侧面 在matlab中自带了绘制圆柱体的功能函数cylinder,其用法如下: 例1,绘制一个圆柱体的三维图像,要求圆柱体底面圆心在坐标原点,底面半径为3,高度为 ...

  6. matlab绘制星下点轨迹,卫星星下点轨迹Matlab仿真.docx

    使用Matlab绘制卫星星下点轨迹1.地球静止轨道卫星,倾角分别为0,30,90度.clc; clear;t = 0:1:6;we = 360/24;u = we*t;i = 30;fai = asi ...

  7. matlab绘制加速度曲线,科学网-Matlab编写由加速度积分得到速度和位移函数-王德才的博文...

    研究中经常会用到将加速度数据积分成速度和位移,对前几年编写的程序重新进行了改写.为了测试和验证peer2acc函数.dirFolder函数和acc2vd函数,编写了一个简单的测试程序 acc2vd函数 ...

  8. matlab绘制y3=e (-x),MATLAB图形绘制-二维配套实验

    实验五 MATLAB 绘图-二维 1.在同一坐标系下绘制下面三个函数在t ∈[0,4π]的图象. ) sin(41.0321t e y t y t y t -===π 注意此处的sin (t )前面需 ...

  9. matlab绘制磁场图,基于Matlab的电磁场图示化教学

    第 26 卷第 3 期 孝感学院学报 VOL. 26 NO. 3 2006 年 5 月 JOURNAL OF XIAOGAN UNIVERSITY MA Y. 2006 基于 Matlab 的电磁场图 ...

最新文章

  1. nginx 日志切割
  2. 设置Kali Linux虚拟机连接网络
  3. 自己实现内存操作函数memset(),memcmp(),memcpy(),memmove()
  4. linux拒绝sftp连接,linux服务器拒绝sftp
  5. jfinal使用shiro注解大体流程
  6. phpRedisAdmin 安装
  7. java string逆序_java经典入门算法题,java初学者必备
  8. XSS-Game level 7
  9. JAVA——网络编程
  10. SSL Library Compare
  11. 【数学模型】商人们怎样过河?
  12. 无网络状态下显卡驱动软件安装
  13. 基于互联网位置数据的通勤特征挖掘技术
  14. java怎么画八卦图_八卦图怎么画 最正确的八卦图
  15. win10下PHP开发环境搭建
  16. 4399测试工程师笔试题
  17. 基于OSGi的企业级开发框架实践——OSGi Annotations
  18. 视频号最新组合玩法,打造全新变现渠道丨国仁网络
  19. 关于《火影忍者 博人传》的一点想法
  20. 简单描述模型的鲁棒性和泛化性的区别

热门文章

  1. 商城项目---(一)搭建
  2. Python读写文件(txt, csv等)小结
  3. ERROR: resetting DM9000 -> not responding dm9000 not found at 0x88000000问题解决
  4. 论责任成本管理体系的构建
  5. 使用GDI+实现动态设置分级断点值
  6. 云计算原理与实践 第一章、云计算概述
  7. oracle创建编号函数,oracle函数初次尝试
  8. iOS 冰与火之歌 - 利用 XPC 过 App 沙盒
  9. java swing 跳转窗口_java swing 怎么实现点击按钮或者某个组件,跳转到另一个页面或者窗体?...
  10. 权重初始化——Torch和Keras的方法