matlab.system.getOutputDataTypeImpl - Data types of output ports - MATLAB (original) (raw)

Data types of output ports

Syntax

[dt_1,dt_2,...,dt_n] = getOutputDataTypeImpl(obj)

Description

[dt_1,dt_2,...,dt_n] = getOutputDataTypeImpl(obj) returns the data type of each output port as a character vector for built-in data types or as a numerictype (Fixed-Point Designer) object for fixed-point data types. The number of outputs must match the value returned from the getNumOutputsImpl method or the number of output arguments listed in the stepImpl method.

For System objects with one input and one output and where you want the input and output data types to be the same, you do not need to implement this method. In this case,getOutputDataTypeImpl assumes the input and output data types are the same and returns the data type of the input.

If your System object™ has more than one input or output, and you use propagation, you must set the output data types in the getOutputDataTypeImpl method. For Simulink®, if the input and output data types are different, you might have to cast the output value to the data type of the appropriate dt_n output argument. You specify this casting in the stepImpl method. For bus output, you must specify the name of the output bus in getOutputDataTypeImpl.

If needed to determine the output data type, you can use propagatedInputDataType within the getOutputDataTypeImpl method to obtain the input type.

Run-Time Details

getOutputDataTypeImpl is called by the MATLAB System block.

Method Authoring Tips

Input Arguments

expand all

System object handle used to access properties, states, and methods specific to the object. If your getOutputDataTypeImpl method does not use the object, you can replace this input with ~.

Output Arguments

expand all

Data type of the property. For built-in data types, dt is a character vector. For fixed-point data types, dt is a numerictype (Fixed-Point Designer) object.

For outputs with enumeration data type defined in the base workspace,dt is a character vector specifying the name of the enumeration class. For outputs with enumeration data type defined asSimulink.data.dictionary.EnumTypeDefinition object in the design data section of a data dictionary, dt is a character vector specifying the name of the object.

Examples

expand all

Specify, in your class definition file how to control the output data type from a MATLAB® System block. This example shows how to use the getOutputDataTypeImpl method to change the output data type from single to double, or propagate the input as a double. It also shows how to cast the data type to change the output data type in the stepImpl method.

classdef DataTypeChange < matlab.System

properties(Nontunable) Quantize = false end

methods(Access = protected) function y = stepImpl(obj,u) if obj.Quantize == true % Cast for output data type to differ from input. y = single(u); else % Propagate output data type. y = u; end end

  function out = getOutputDataTypeImpl(obj)
     if obj.Quantize == true
        out = "single";
     else
        out = propagatedInputDataType(obj,1);
     end
  end

end end

Specify, in your class definition file, that the System object data type is a bus. You must also include a property to specify the bus name.

properties(Nontunable) OutputBusName = "myBus"; end

methods (Access = protected) function out = getOutputDataTypeImpl(obj) out = obj.OutputBusName; end end

The data type of the output bus must be defined upfront. The propagatedInputDataType method does not support propagation of bus data types to the output data type.

Version History

Introduced in R2013b