Задайте атрибуты свойств

Property attributes, которые добавляют детали в свойство, обеспечивают слой управления вашими свойствами. В дополнение к MATLAB® атрибуты свойств и валидация свойств, Системные объекты могут использовать Nontunable или DiscreteState. Чтобы задать несколько атрибутов, разделите их запятыми.

Задайте свойство как Nontunable

По умолчанию все свойства настраиваются, что означает, что значение свойства может измениться в любой момент.

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

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

properties (Nontunable)
   InitialValue = 0;
end

Задайте свойство как DiscreteState

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

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

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

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

  • Не подлежит публичному урегулированию

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

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

Для примера задаете Count свойство как дискретное состояние:

properties (DiscreteState)
   Count;
end

Пример класса с различными атрибутами свойств

В этом примере показаны два неотронутых свойства, дискретное свойство состояний, а также валидация свойства класса MATLAB, чтобы задать атрибуты свойства.

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
      % The maximum value of the counter, must be a positive integer scalar
      MaxValue (1, 1) {mustBePositive, mustBeInteger} = 3
  end
  
  properties
      % Whether to increment the counter, must be a logical scalar
      Increment (1, 1) logical = 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

Похожие темы