Validate Property and Input Values - MATLAB & Simulink (original) (raw)

Main Content

This example shows how to verify that the inputs and property values given to your System objectâ„¢ are valid.

Validate a Single Property

To validate a property value, independent of other properties, use MATLAB class property validation. This example shows how to specify a logical property, a positive integer property, and a string property that must be one of three values.

properties UseIncrement (1,1) logical = false WrapValue (1,1) {mustBePositive, mustBeInteger} = 1 Color (1,1) string {mustBeMember(Color, ["red","green","blue"])} = "red" end

Validate Interdependent Properties

To validate the values of two or more interdependent properties, use the validatePropertiesImpl. This example shows how to writevalidatePropertiesImpl to verify that a logical property (UseIncrement) is true and the value ofWrapValue is larger than Increment.

methods (Access = protected) function validatePropertiesImpl(obj) if obj.UseIncrement && obj.WrapValue > obj.Increment error("Wrap value must be less than increment value"); end end end

Validate Inputs

To validate input values, use the validateInputsImpl method. This example shows how to validate that the first input is a numeric value.

methods (Access = protected) function validateInputsImpl(~,x) if ~isnumeric(x) error("Input must be numeric"); end end end

Complete Class Example

This example is a complete System object that shows examples of each type of validation syntax.

classdef AddOne < matlab.System % ADDONE Compute an output value by incrementing the input value

% All properties occur inside a properties declaration. % These properties have public access (the default) properties UseIncrement (1,1) logical = false WrapValue (1,1) {mustBePositive, mustBeInteger} = 10 Increment (1,1) {mustBePositive, mustBeInteger} = 1 end

methods (Access = protected) function validatePropertiesImpl(obj) if obj.UseIncrement && obj.WrapValue > obj.Increment error("Wrap value must be less than increment value"); end end

% Validate the inputs to the object
function validateInputsImpl(~,x)
    if ~isnumeric(x)
      error("Input must be numeric");
    end
end
    
function out = stepImpl(obj,in)
  if obj.UseIncrement
    out = in + obj.Increment;
  else
    out = in + 1;
  end
end    

end end

See Also

validateInputsImpl | validatePropertiesImpl

Topics