В этом примере показано, как задать количество входов для системной 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:
Добавьте свойство nontunable 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