Main Content

更改输入数目

此示例说明如何在使用和不使用 getNumInputsImpl 的情况下设置 System object™ 的输入数目。

如果您的输入或输出数目可变,并且打算在 Simulink® 中使用 System object,则必须在类定义中包含 getNumInputsImplgetNumOutputsImpl 方法。

这些示例说明了更改输入数目的情况。如果要更改输出数目,这些原则同样适用。

就像对所有 System object Impl 方法一样,您应始终将 getNumInputsImplgetNumOutputsImpl 方法的访问权限设置为 protected,因为它们是不能直接调用的内部方法。

最多允许三个输入

此示例说明如何编写允许输入数目可变的 System object。

通过添加处理一个、两个或三个输入的代码,将 stepImpl 方法更新为最多可接受三个输入。如果您仅在 MATLAB 中使用此 System object,则不需要 getNumInputsImplgetNumOutputsImpl

完整的类定义

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

另请参阅

|

相关主题