Класс: matlab. DiscreteEventSystem
Пакет: matlab
Действие события при итерации сущности
[entity,events,next]=iterate(obj,storage,entity,tag,cur)
[entity,events,next,out1,...]=iterate(obj,storage,entity,tag,cur,in1,...)
[
задает действия события для, когда сущность обрабатывается как часть итерационного события.entity
,events
,next
]=iterate(obj
,storage
,entity
,tag
,cur
)
[
задает такие действия события, когда блок имеет один или несколько портов входного сигнала и/или выходных портов сигнала.entity
,events
,next
,out1
,...]=iterate(obj
,storage
,entity
,tag
,cur
,in1
,...)
Передайте первую сущность с совпадающим значением данных в выходной порт 1 системы дискретных событий.
function [entity,events,next] = iterate(obj,storage,entity,tag,status) % Forward the first entity with matching data value to output % port 1 of the discrete-event system. disp(['Searching in storage element ' num2str(storage)]); disp([' Total size = ' num2str(status.size)]); disp([' Current position = ' num2str(status.position)]); if (entity.data == obj.dataToSearch) events = obj.eventForward('output', 1, 0); next = false; % Found -- early terminate else events = []; next = true; % Not yet found -- continue end end
В этом примере пользовательский блок позволяет сущностям вводить свой элемент хранения через его входной порт. Элемент хранения данных является очередью приоритетов, которая сортирует сущности на основе их Diameter
атрибут в порядке возрастания. Каждый вход сущности в хранилище блока вызывает событие итерации, чтобы отобразить диаметр и положение каждой сущности в хранилище.
Дополнительные сведения см. в разделе Создание пользовательского блока хранения сущностей с событием итерации.
classdef CustomEntityStorageBlockIteration < matlab.DiscreteEventSystem % A custom entity storage block with one input port and one storage element. % Nontunable properties properties (Nontunable) % Capacity Capacity = 5; end % Create the storage element with one input and one storage. methods (Access=protected) function num = getNumInputsImpl(obj) num = 1; end function num = getNumOutputsImpl(obj) num = 0; end function entityTypes = getEntityTypesImpl(obj) entityType1 = obj.entityType('Wheel'); entityTypes = entityType1; end function [inputTypes,outputTypes] = getEntityPortsImpl(obj) inputTypes = {'Wheel'}; outputTypes={}; end function [storageSpecs, I, O] = getEntityStorageImpl(obj) storageSpecs = obj.queuePriority('Wheel',obj.Capacity, 'Diameter','ascending'); I = 1; O = []; end end % Entity entry event action methods function [entity, event] = WheelEntry(obj,storage,entity, source) % Entity entry invokes an iterate event. event = obj.eventIterate(1, ''); end % The itarate event action function [entity,event,next] = WheelIterate(obj,storage,entity,tag,cur) % Display wheel id, position in the storage, and diameter. coder.extrinsic('fprintf'); fprintf('Wheel id %d, Current position %d, Diameter %d\n', ... entity.sys.id, cur.position, entity.data.Diameter); if cur.size == cur.position fprintf('End of Iteration \n') end next = true; event=[]; end end end
blocked
| destroy
| entry
| exit
| generate
| getEntityPortsImpl
| getEntityStorageImpl
| getEntityTypesImpl
| matlab.DiscreteEventSystem
| setupEvents
| timer