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