主要内容

迭代

类:matlab.DiscreteEventSystem
包:matlab

事件动作当实体迭代

语法

(实体、事件、下)=迭代(obj、存储实体,标签,cur)
(实体、事件、接下来,着干活,…]=迭代(obj、存储实体,标签,坏蛋,in1,…)

描述

(实体,事件,下一个)=迭代(obj,存储,实体,标签,坏蛋)指定事件的行为当一个实体加工作为一个迭代事件的一部分。

(实体,事件,下一个,着干活…]=迭代(obj,存储,实体,标签,坏蛋,三机一体,……)指定这样的事件动作时块有一个或多个输入信号端口和/或信号输出端口。

输入参数

全部展开

离散事件系统对象。

存储元素的索引。

实体目前正在处理。实体有这些字段:

  • sys(MATLAB结构)——它有这些字段:

    • id()——实体的ID

    • 优先级()- - -实体优先

  • 数据——实体数据

当前实体的标签重复的事件。

MATLAB结构指示当前状态的迭代。结构有这些字段:

  • 大小

    总数量的实体存储

  • 位置

    当前迭代实体的位置

任何对象的数据输入。这些输入参数存在只有当对象数据输入。

输出参数

全部展开

实体正在处理,可能更改的数据。

事件将在方法返回之后。使用matlab.DiscreteEventSystem类方法来创建事件。每个事件都有这些字段:

  • 类型(特征向量)- - -类型的事件

  • 延迟()- - -前延迟事件

  • 优先级()- - -事件的优先级

  • 存储()- - -存储元素的索引

  • 标签(特征向量)- - -事件标记

  • 位置(MATLAB结构)——源或目标实体的位置

  • 真正的

    继续处理下一个实体存储元素。

  • 终止迭代事件,把其余的实体存储元素的未经加工的。

对象的数据输出。您必须指定这些对象时输出参数数据输出。

例子

提出第一个实体

提出第一个实体匹配数据值输出端口1的离散事件系统。

函数(实体、事件、下)=迭代(obj、存储、实体、标签、状态)%向前第一实体匹配数据值输出%端口1的离散事件系统。disp ([“搜索在存储元素”num2str(存储)]);disp ([的总大小= 'num2str (status.size)]);disp ([“当前位置= 'num2str (status.position)]);如果(实体。数据== obj.dataToSearch) events = obj.eventForward(“输出”1 0);下一个= false;%发现,早期终止其他的事件= [];下一个= true;%没有找到,继续结束结束

自定义实体存储块迭代的事件

在这个例子中,一个自定义块允许实体进入其存储元素通过其输入端口。存储元素是一个优先队列,根据实体直径属性按升序。每个实体进入块的存储调用迭代事件显示直径和存储中的每个实体的位置。

有关更多信息,请参见创建一个自定义实体存储块迭代的事件

classdefCustomEntityStorageBlockIteration < matlab.DiscreteEventSystem%一个自定义实体存储块和一个输入端口和一个存储元素。% Nontunable属性属性(Nontunable)%的能力能力= 5;结束%创建存储元素具有一个输入和一个存储。方法(访问=保护)函数num = getNumInputsImpl (obj) num = 1;结束函数num = getNumOutputsImpl (obj) num = 0;结束函数entityTypes = getEntityTypesImpl (obj) entityType1 = obj.entityType (“轮”);entityTypes = entityType1;结束函数[inputTypes, outputTypes] = getEntityPortsImpl (obj) inputTypes = {“轮”};outputTypes = {};结束函数[storageSpecs, I, O] = getEntityStorageImpl (obj) storageSpecs = obj.queuePriority (“轮”obj.Capacity,“直径”,“提升”);I = 1;O = [];结束结束%的实体进入事件的行动方法函数(实体、事件)= WheelEntry (obj、存储实体,源)%实体条目调用一个迭代的事件。事件= obj.eventIterate (1,);结束% itarate事件动作函数(实体、事件、下)= WheelIterate (obj、存储实体,标签,cur)%显示轮id,在存储位置和直径。coder.extrinsic (“流”);流(“轮id % d,当前位置% d,直径% d \ n ',entity.sys。id,坏蛋。位置,实体。数据。直径);如果cur.size = = cur.position流(“迭代\ n的终结”)结束下一个= true;事件= [];结束结束结束

版本历史

介绍了R2016a