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,...) 使用一个或多个 System object 输入设定来确定输入是否具有直接馈通。

如果未在 System object™ 类定义文件中包括 isInputDirectFeedthroughImpl 方法,那么所有输入都假定为直接馈通。

代码生成

下面描述了 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 签名中的输入顺序匹配。

输出参量

全部展开

逻辑值 truefalse,指示输入是否为直接馈通。输出标志的数量必须与 System object 的输入(stepImploutputImplupdateImpl 的输入)数量相匹配。

示例

全部展开

在类定义文件中使用 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)