更改输入数目
此示例说明如何在使用和不使用 getNumInputsImpl
的情况下设置 System object™ 的输入数目。
如果您的输入或输出数目可变,并且打算在 Simulink® 中使用 System object,则必须在类定义中包含 getNumInputsImpl
或 getNumOutputsImpl
方法。
这些示例说明了更改输入数目的情况。如果要更改输出数目,这些原则同样适用。
就像对所有 System object Impl
方法一样,您应始终将 getNumInputsImpl
和 getNumOutputsImpl
方法的访问权限设置为 protected
,因为它们是不能直接调用的内部方法。
最多允许三个输入
此示例说明如何编写允许输入数目可变的 System object。
通过添加处理一个、两个或三个输入的代码,将 stepImpl
方法更新为最多可接受三个输入。如果您仅在 MATLAB 中使用此 System object,则不需要 getNumInputsImpl
和 getNumOutputsImpl
。
完整的类定义
classdef AddTogether < matlab.System % Add inputs together methods (Access = protected) function y = stepImpl(~,x1,x2,x3) switch nargin case 2 y = x1; case 3 y = x1 + x2; case 4 y = x1 + x2 + x3; otherwise y = []; end end end end
使用一个、两个和三个输入运行此 System object。
addObj = AddTogether; addObj(2)
ans = 2
addObj(2,3)
ans = 5
addObj(2,3,4)
ans = 9
使用属性控制输入和输出的数目
此示例说明如何编写允许在运行之前更改输入和输出数目的 System object。如果要将您的 System object 包含在 Simulink 中,请使用此方法:
添加一个不可调属性
NumInputs
来控制输入的数目。实现关联的
getNumInputsImpl
方法,以指定输入的数目。
完整的类定义
classdef AddTogether2 < matlab.System % Add inputs together. The number of inputs is controlled by the % nontunable property |NumInputs|. properties (Nontunable) NumInputs = 3; % Default value end methods (Access = protected) function y = stepImpl(obj,x1,x2,x3) switch obj.NumInputs case 1 y = x1; case 2 y = x1 + x2; case 3 y = x1 + x2 + x3; otherwise y = []; end end function validatePropertiesImpl(obj) if ((obj.NumInputs < 1) ||... (obj.NumInputs > 3)) error("Only 1, 2, or 3 inputs allowed."); end end function numIn = getNumInputsImpl(obj) numIn = obj.NumInputs; end end end
使用一个、两个和三个输入运行此 System object。
addObj = AddTogether2; addObj.NumInputs = 1; addObj(2)
ans = 2
release(addObj); addObj.NumInputs = 2; addObj(2,3)
ans = 5
release(addObj); addObj.NumInputs = 3; addObj(2,3,4)
ans = 9
另请参阅
getNumInputsImpl
| getNumOutputsImpl