Main Content

isInputDirectFeedthroughImpl

クラス: matlab.System

入力の直達のステータス

構文

[flag1,...,flagN] = isInputDirectFeedthroughImpl(obj)
[flag1,...,flagN] = isInputDirectFeedthroughImpl(obj,input,input2,...)

説明

[flag1,...,flagN] = isInputDirectFeedthroughImpl(obj) は、各入力が直達入力かどうかを指定します。直達が true の場合、出力は、各時点の入力に依存します。

[flag1,...,flagN] = isInputDirectFeedthroughImpl(obj,input,input2,...) は、1 つ以上の System object 入力仕様を使用して、入力に直達があるかどうかを判別します。

isInputDirectFeedthroughImpl メソッドを System object™ クラス定義ファイルに含めない場合、すべての入力は直達であると見なされます。

コード生成

以下のケースでは、Simulink® コード生成の System object が直達または非直達を使用する場合を説明します。

System object のコード生成サポート伝播の Impl メソッドの使用Simulink のコード生成結果
YN

Simulink は、System object コードから直達設定を自動的に推定します。

YYSimulink は、直達設定を自動的に推定しません。代わりに、isInputDirectFeedthroughImpl メソッドによって返される値を使用します。
N

既定の isInputDirectFeedthroughImpl メソッドは、直達が有効になっていないことを示す false を返します。既定の動作をオーバーライドするには、クラス定義ファイルで isInputDirectFeedthroughImpl メソッドを実装します。

実行時の詳細

isInputDirectFeedthroughImplMATLAB System (Simulink) ブロックによって呼び出されます。

メソッドのオーサリングのヒント

  • このメソッドでは Access = protected と設定しなければなりません。

  • このメソッドでは、調整可能なプロパティに対する変更、実装、またはアクセスはできません。

  • MATLAB System (Simulink) ブロックを使用して Simulink で System object を使用する場合は、このメソッドで System object の入力値を使用しないでください。仕様の入力 (つまり、データ型、複雑度、およびサイズ) のみをクエリできます。

入力引数

すべて展開する

オブジェクト固有のプロパティ、状態、およびメソッドへのアクセスに使用される System object ハンドル。isInputDirectFeedthroughImpl メソッドがこのオブジェクトを使用しない場合、この入力を ~ に置き換えることができます。

System object のアルゴリズムへの入力 (stepImpl)。入力のリストは stepImpl のシグネチャにおける入力の順序と一致していなければなりません。

出力引数

すべて展開する

入力が直達かどうかを示す、true または false の logical 値。出力フラグの数は、System object への入力数 (stepImploutputImpl、または updateImpl への入力) と一致していなければなりません。

すべて展開する

すべての入力を非直達としてマークするには、クラス定義ファイルで isInputDirectFeedthroughImpl を使用します。

methods (Access = protected)
   function flag = isInputDirectFeedthroughImpl(~)
      flag = false;
   end
end

完全なクラス定義

classdef intDelaySysObj < matlab.System 
   % intDelaySysObj Delay input by specified number of samples.

   properties
      InitialOutput = 0;
   end
   properties (Nontunable)
      NumDelays = 1;
   end
   properties (DiscreteState)
      PreviousInput;
   end

   methods (Access = protected)
      function validatePropertiesImpl(obj)
         if ((numel(obj.NumDelays)>1) || (obj.NumDelays <= 0))
            error('Number of delays must be > 0 scalar value.');
         end
         if (numel(obj.InitialOutput)>1)
            error('Initial Output must be scalar value.');
         end
      end

      function setupImpl(obj)
         obj.PreviousInput = ones(1,obj.NumDelays)*obj.InitialOutput;
      end
      
      function resetImpl(obj)
         obj.PreviousInput = ones(1,obj.NumDelays)*obj.InitialOutput;
      end
      
      function [y] = outputImpl(obj,~)
         y = obj.PreviousInput(end);
      end
      function updateImpl(obj, u)
         obj.PreviousInput = [u obj.PreviousInput(1:end-1)]; 
      end
      function flag = isInputDirectFeedthroughImpl(~)
         flag = false;
      end
   end
end 

バージョン履歴

R2013b で導入

参考

(Simulink) | (Simulink)