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