iterate

Класс: mATLAB.
Пакет: 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,...) задает такие действия события, когда блок имеет один или несколько портов входного сигнала и/или выходных портов сигнала.

Входные параметры

развернуть все

Объект Discrete-event System.

Индекс запоминающего элемента.

Сущность, в настоящее время обрабатываемая. Сущность имеет эти поля:

  • sys (MATLAB structure) — Это имеет эти поля:

    • id 'double') — ID сущности

    • priority 'double') — Приоритет сущности

  • data — Данные сущности

Тег текущей сущности выполняет итерации события.

Структура MATLAB, указывающая на текущее состояние итерации. Структура имеет эти поля:

  • size

    Общее количество сущностей устройство хранения данных имеет

  • position

    Позиция текущей сущности итерации

Любые вводы данных объекта. Эти входные параметры существуют только, когда объект имеет вводы данных.

Выходные аргументы

развернуть все

Обрабатываемая сущность, возможно с измененными данными.

События, которые будут запланированы после метода, возвращаются. Используйте matlab.DiscreteEventSystem методы класса создать события. Каждое событие имеет эти поля:

  • type Символьный вектор) — Тип события

  • delay 'double') — Задерживаются перед событием

  • priority 'double') — Приоритет события

  • Storage 'double') — Индекс запоминающего элемента

  • tag Символьный вектор) — Тег события

  • location (MATLAB structure) — Источник или целевое местоположение сущности

  • TRUE

    Продолжите обрабатывать следующую сущность в запоминающем элементе.

  • Ложь

    Отключите выполнить итерации событие и остальную часть отпуска сущностей необработанного запоминающего элемента.

Выводы данных объекта. Необходимо задать эти выходные аргументы, когда объект имеет выводы данных.

Примеры

Передайте первую сущность

Передайте первую сущность с соответствием со значением данных к выходному порту 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

Введенный в R2016a