В этом примере показано, как определить номер входных параметров для Системы object™ с и не используя getNumInputsImpl.
Если у вас есть переменное количество вводов или выводов, и вы намереваетесь использовать Системный объект в Simulink®, необходимо включать getNumInputsImpl или getNumOutputsImpl метод в вашем определении класса.
Эти примеры показывают модификации для количества входных параметров. Если вы хотите изменить количество выходных параметров, те же принципы применяются.
Как со всем Системным объектом Impl методы, вы всегда устанавливаете getNumInputsImpl и getNumOutputsImpl доступ метода к protected потому что они - внутренние методы, которые никогда не называются непосредственно.
В этом примере показано, как записать Системный объект, который позволяет количеству входных параметров варьироваться.
Обновите stepImpl метод, чтобы принять до трех входных параметров путем добавления кода, чтобы обработать один, два, или три входных параметров. Если вы только используете этот Системный объект в MATLAB, 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
Запустите этот Системный объект с один, два, и три входных параметров.
addObj = AddTogether; addObj(2)
ans =
2
addObj(2,3)
ans =
5
addObj(2,3,4)
ans =
9
В этом примере показано, как записать Системный объект, который позволяет изменения в количестве вводов и выводов прежде, чем запустить объект. Используйте этот метод, когда ваш Системный объект будет включен в 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
Запустите этот Системный объект с один, два, и три входных параметров.
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