queuePriority

Класс: mATLAB.
Пакет: mATLAB

Задайте приоритетное устройство хранения данных очереди

Синтаксис

storage=queuePriority(entityType,capacity,key,order)

Описание

storage=queuePriority(entityType,capacity,key,order) задает приоритетную очередь что сущности видов пользовательским атрибутом. Используйте эту функцию при реализации getEntityStorageImpl метод.

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

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

Тип сущностей, с которыми работает новый запоминающий элемент.

Максимальное количество сущностей, которые устройство хранения данных может содержать в виде двойного.

Имя атрибута, который используется в качестве ключа для сортировки.

Направление сортировки. Задайте 'ascending' если вы хотите, чтобы сущности с меньшими значениями ключа появились перед очередью. Задайте 'descending' если вы хотите, чтобы сущности с большими значениями ключа появились перед очередью.

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

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

Запоминающий элемент очереди, который содержит сущности и сортирует их использующий пользовательский атрибут.

Примеры

Задайте запоминающий элемент как приоритетную очередь

Задайте запоминающий элемент как приоритетную очередь.

% Define a storage element as a priority queue        
% - Queue sorts entities using a specific attribute of the entities
% - Queue can store entities of type 'myEntity'
% - Queue can store no more than 25 entities
% - Queue uses the attribute 'age' to sort entities
% - Sorting direction is 'ascending', resulting entities with
%   smaller 'age' attribute values to appear in front of the queue
storage = obj.queuePriority('myEntity', 25, 'age', 'ascending'); 

Пользовательский блок системы хранения сущности с событием итерации

В этом примере пользовательский блок позволяет сущностям вводить свой запоминающий элемент через его входной порт. Запоминающий элемент является приоритетной очередью, которая сортирует сущности на основе их 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