Define Property Attributes - MATLAB & Simulink (original) (raw)

Main Content

Property attributes, which add details to a property, provide a layer of control to your properties. In addition to the MATLAB® property attributes and property validation, System objects can useNontunable or DiscreteState. To specify multiple attributes, separate them with commas.

Specify Property as Nontunable

By default all properties are tunable, meaning the value of the property can change at any time.

Use the Nontunable attribute for a property when the algorithm depends on the value being constant once data processing starts. Defining a property as nontunable may improve the efficiency of your algorithm by removing the need to check for or react to values that change. For code generation, defining a property as nontunable allows the memory associated with that property to be optimized. You should define all properties that affect the number of input or output ports as nontunable.

Note

If a MATLAB System object™ that is a handle class is assigned as nontunable property of the object, changes to properties of this matlab.System object cannot be detected. Changes to properties of matlab.System objects that are value classes can be detected. If a nontunable matlab.System property is changed from one handle class to another then it is detected.

When you use the System object, you can only change nontunable properties before calling the object or after calling the release function. For example, you define theInitialValue property as nontunable and set its value to 0.

properties (Nontunable) InitialValue = 0; end

Specify Property as DiscreteState

If your algorithm uses properties that hold state, you can assign those properties theDiscreteState attribute. Properties with this attribute display their state values via the getDiscreteStateImpl when users callgetDiscreteState. The following restrictions apply to a property with the DiscreteState attribute,

For example, you define the Count property as a discrete state:

properties (DiscreteState) Count; end

Insert Custom Property

Use the Custom Property dialog box to define a new property with selected attributes. To add custom property, select the Insert Property drop-down from the Editor toolstrip and select Custom Property.... Use the dialog box to set the property access, System object attributes, and MATLAB property attributes for your custom properties.

Access

Access Setting Description
SetAccess and GetAccess public Property can be accessed by any other code in the same System object or another System object that references it.
protected Property can be used only by code in the same System object or in a subclass.
private Property can be accessed only by code in the same System object.
immutable You can set this property value only when you create the System object. You cannot change the property value. This setting applies only toSetAccess.

System Object Attributes

Attribute Description
Logical Limits the property values to logical scalar values. Any scalar value that can be converted to a logical is also valid, such as 0 or 1.
Nontunable Prevents changes to the property values while system is running.
DiscreteState Holds state value.
PositiveInteger Limits the property value to a positive integer value.

MATLAB Property Attributes

Attribute Description
Constant This property has only one value in all instances of the class.
Hidden The property is not shown in a property list.
Dependent The property value is not stored in the object. The set andget functions cannot access the property by indexing into the object using the property name.

To create the property with the selected attributes, clickInsert. MATLAB Editor inserts the property into your code.

Example Class with Various Property Attributes

This example shows two nontunable properties, a discrete state property, and also MATLAB class property validation to set property attributes.

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

See Also

Topics