Класс: mATLAB.
Пакет: mATLAB
Задайте приоритетное устройство хранения данных очереди
storage=queuePriority(entityType,capacity,key,order)
задает приоритетную очередь что сущности видов пользовательским атрибутом. Используйте эту функцию при реализации storage
=queuePriority(entityType
,capacity
,key
,order
)getEntityStorageImpl
метод.
Задайте запоминающий элемент как приоритетную очередь.
% 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
getEntityStorageImpl
| queueFIFO
| queueLIFO
| queueSysPriority