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
- You must set
Access = protected
for this method. - You cannot modify any properties in this method.
- If you are debugging your code and examine the data types before Simulink completes propagation, you might see outputs with empty, [ ], data types. This occurs because Simulink has not completed setting the output data types.
Input Arguments
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
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
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