Main Content

getOutputDataTypeImpl

类: matlab.System

输出端口的数据类型

语法

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

说明

[dt_1,dt_2,...,dt_n] = getOutputDataTypeImpl(obj) 以字符向量形式(对于内置数据类型)或以数值对象形式(对于定点数据类型)返回每个输出端口的数据类型。输出数目必须匹配从 getNumOutputsImpl 方法返回的值,或 stepImpl 方法中列出的输出参数的数目。

对于具有一个输入和一个输出以及您希望输入和输出具有相同数据类型的 System object,不需要实现此方法。在这种情况下,getOutputDataTypeImpl 假定输入和输出数据类型相同,并返回输入的数据类型。

如果您的 System object™ 具有多个输入或输出,并且您使用传播,则您必须在 getOutputDataTypeImpl 方法中设置输出数据类型。对于 Simulink®,如果输入和输出数据类型不同,您可能必须将输出值转换为相应的 dt_n 输出参数的数据类型。您需要在 stepImpl 方法中指定此转换。对于总线输出,您必须在 getOutputDataTypeImpl 中指定输出总线的名称。

如果需要确定输出数据类型,您可以在 getOutputDataTypeImpl 方法内使用 propagatedInputDataType 获取输入类型。

运行时详细信息

getOutputDataTypeImplMATLAB System (Simulink) 模块调用。

方法编写提示

  • 您必须先对此方法设置 Access = protected

  • 您不能修改此方法中的任何属性。

  • 如果要调试代码,并在 Simulink 完成传播之前检查数据类型,您可能会看到输出具有空的 [] 数据类型。之所以出现这种情况是因为 Simulink 尚未完成输出数据类型的设置。

输入参数

全部展开

System object 句柄,用于访问特定于该对象的属性、状态和方法。如果您的 getOutputDataTypeImpl 方法不使用该对象,您可以用 ~ 替换此输入。

输出参数

全部展开

属性的数据类型。对于内置数据类型,dt 是一个字符向量。对于定点数据类型,dt 是数值类型对象。

对于在基础工作区中定义的枚举数据类型的输出,dt 是指定枚举类名称的字符向量。对于在数据字典的设计数据部分中定义为 Simulink.data.dictionary.EnumTypeDefinition 对象的枚举数据类型的输出,dt 是指定对象名称的字符向量。

示例

全部展开

在您的类定义文件中指定如何从 MATLAB® System 模块控制输出数据类型。以下示例说明如何使用 getOutputDataTypeImpl 方法将输出数据类型从单精度更改为双精度,或以双精度形式传播输入。它还说明如何强制转换数据类型以更改 stepImpl 方法中的输出数据类型。

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

在您的类定义文件中指定 System object 的数据类型为总线。您还必须包括一个属性以指定总线名称。

properties(Nontunable)
   OutputBusName = "myBus";
end

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

输出总线的数据类型必须提前定义。propagatedInputDataType 方法不支持将总线数据类型传播到输出数据类型。

版本历史记录

在 R2013b 中推出

另请参阅

主题