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