Определение Атрибутов свойств

Этот пример показывает, как задать атрибуты свойства.

Атрибуты свойства, которые добавляют детали к свойству, обеспечивают уровень управления к вашим свойствам. В дополнение к атрибутам свойства MATLAB® Системные объекты могут использовать эти три дополнительных атрибута: Nontunable, Logical и PositiveInteger. Чтобы задать несколько атрибутов, разделите их запятыми.

Определение свойства как ненастраиваемого

Используйте атрибут Nontunable для свойства, когда алгоритм зависит от значения, являющегося постоянным, если обработка данных запускается. Определение свойства как ненастраиваемое может повысить эффективность вашего алгоритма путем устранения необходимости проверить на или реагировать на значения то изменение. Для генерации кода, задавая свойство как ненастраиваемое позволяет памяти, сопоставленной с тем свойством быть оптимизированной. Необходимо задать все свойства, которые влияют на количество портов ввода или вывода как ненастраиваемое.

Пользователи Системы object™ могут только изменить ненастраиваемые свойства прежде, чем вызвать объект или после вызывания функции release. В этом примере вы задаете свойство InitialValue как ненастраиваемое и устанавливаете его значение к 0.

properties (Nontunable)
   InitialValue = 0;
end

Определение свойства как логического

Логические свойства имеют значение true или false. Пользователи системного объекта могут ввести 1 или 0 или любое значение, которое может быть преобразовано в логическое. Значение, однако, отображается как true или false. Можно использовать разреженные логические значения, но они должны быть скалярными значениями. В этом примере свойство Increment указывает, увеличить ли счетчик. По умолчанию Increment является настраиваемым свойством. Следующие ограничения применяются к свойству с атрибутом Logical,

  • Не может также быть Dependent или PositiveInteger

  • Значением по умолчанию должен быть true или false. Вы не можете использовать 1 или 0 как значение по умолчанию.

properties (Logical)
   Increment = true 
end

Определение свойства как положительного целого числа

В этом примере частная собственность MaxValue ограничивается принять только действительные, положительные целые числа. Вы не можете использовать разреженные значения. Следующее ограничение применяется к свойству с атрибутом PositiveInteger,

  • Не может также быть Dependent или Logical

properties (PositiveInteger)
   MaxValue
end
         

Определение свойства как DiscreteState

Если ваш алгоритм использует свойства, что состояние удержания, можно присвоить те свойства атрибут DiscreteState. Свойства с этим атрибутом отображают свои значения состояния через getDiscreteStateImpl, когда пользователи вызывают getDiscreteState. Следующие ограничения применяются к свойству с атрибутом DiscreteState,

  • Числовое, логическое, или fi значение, но не масштабированное двойное fi значение

  • Не имеет ни одного из этих атрибутов: Nontunable, Dependent, Abstract, Constant.

  • Никакое значение по умолчанию

  • Не публично устанавливаемый

  • GetAccess = Public по умолчанию

  • Набор значений только через setupImpl, когда Системный объект называется. (См. Сводные данные Последовательности Вызова),

В этом примере вы задаете свойство Count как дискретное состояние:

properties (DiscreteState)
   Count;
end

Полный файл определения класса с Атрибутами свойств

classdef Counter < matlab.System
% Counter Increment a counter to a maximum value

  % These properties are nontunable. They cannot be changed 
  % after the setup method has been called or while the
  % object is running.
  properties (Nontunable)
      % The initial value of the counter
      InitialValue = 0
  end
  properties (Nontunable, PositiveInteger)
      % The maximum value of the counter
      MaxValue = 3
  end
  
  properties (Logical)
      % Whether to increment the counter
      Increment = true
  end
   
  properties (DiscreteState)
      % Count state variable
      Count
  end
      
  methods (Access = protected)
      % Increment the counter and return its value
      % as an output
  
      function c = stepImpl(obj)
          if obj.Increment && (obj.Count < obj.MaxValue)
              obj.Count = obj.Count + 1;
          else
              disp(['Max count, ' num2str(obj.MaxValue) ' ,reached'])
          end
          c = obj.Count;
      end
      
      % Setup the Count state variable
      function setupImpl(obj)
          obj.Count = 0;
      end
      
      % Reset the counter to one.
      function resetImpl(obj)
          obj.Count = obj.InitialValue;
      end
  end
end

Похожие темы

Была ли эта тема полезной?