Main Content

getOutputDataTypeImpl

クラス: matlab.System

出力端子のデータ型

構文

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

説明

[dt_1,dt_2,...,dt_n] = getOutputDataTypeImpl(obj) は、各出力端子のデータ型を、組み込みデータ型については文字ベクトルとして、固定小数点データ型については数値オブジェクトとして返します。出力数は、getNumOutputsImpl メソッドから返される値または stepImpl メソッドでリストされる出力引数の数と一致しなければなりません。

1 つの入力と 1 つの出力をもつ 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 メソッドを使用して、出力データ型を single から double に変更するか、入力を double として伝播する方法を説明します。また、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 で導入