В этом примере показано, как определить номер входных параметров для Системы 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