Property attributes, которые добавляют детали в свойство, обеспечивают слой управления вашими свойствами. В дополнение к MATLAB® атрибуты свойств и валидация свойств, Системные объекты могут использовать Nontunable
или DiscreteState
. Чтобы задать несколько атрибутов, разделите их запятыми.
По умолчанию все свойства настраиваются, что означает, что значение свойства может измениться в любой момент.
Используйте Nontunable
атрибут для свойства, когда алгоритм зависит от значения, постоянного после начала обработки данных. Определение свойства как nontunable может улучшить эффективность вашего алгоритма, удалив необходимость проверки или реакции на значения, которые изменяются. Для генерации кода, определение свойства как nontunable позволяет оптимизировать память, связанную с этим свойством. Вы должны задать все свойства, которые влияют на количество входных или выходных портов как nontunable.
Когда вы используете System object™, можно изменить только нетронутые свойства перед вызовом объекта или после вызова release
функция. Для примера задаете InitialValue
свойство как nontunable и установите его значение 0.
properties (Nontunable)
InitialValue = 0;
end
Если ваш алгоритм использует свойства, которые удерживают состояние, можно назначить этим свойствам 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