Этот пример показывает, как задать выходной размер, тип данных и сложность блока MATLAB System.
Системные объекты позволяют вам реализовывать использование алгоритмов MATLAB. Системные объекты являются специализированным видом объекта MATLAB, специально разработанного для реализации и симуляции динамических систем с входными параметрами то изменение в зависимости от времени.
После того, как вы зададите Системный объект, можно включать его в модель Simulink с помощью блока MATLAB System.
Этот пример имеет блок MATLAB System, который добавляет входной номер секунд к текущему времени и производит получившиеся часы, минуты и секунды как выходные параметры. Выходные значения от каждого выходного порта отображены в блоках Отображения.
Этот пример, показывает, как задать выходной размер, тип данных и сложность Системного объекта. Вы задаете выходные свойства, когда блок MATLAB System не может вывести их автоматически. Блок MATLAB System использует Системный объект PropagateOutputSpecs
, который реализует методы, чтобы распространить тип входных данных, размер и сложность.
Можно получить доступ к исходному коду MATLAB, используемому блоком MATLAB System путем нажатия на гиперссылку "Source code" от диалогового окна блока. PropagateOutputSpecs
Системного объекта реализует метод stepImpl
, который добавляет входное значение в секундах к текущему времени и выводит получившиеся часы, минуты и секунды. Метод stepImpl
использует функцию datetime
, чтобы вычислить ее вывод. Поскольку функция datetime
не поддерживается для генерации кода, блок MATLAB System не может вывести выходные спецификации автоматически. Системный объект наследовался классу matlab.system.mixin.Propagates
и реализует следующие методы, чтобы задать выходные свойства.
getOutputSizeImpl
- Specify размер вывода
getOutputDataTypeImpl-
Определение типа выходных данных
isOutputComplexImpl
- Specify сложность вывода
isOutputFixedSizeImpl-
Задайте, может ли выведенный быть переменным размером
classdef PropagateOutputSpecs < matlab.System & matlab.system.mixin.Propagates % PropagateOutputSpecs Uses Propagates mixin for Simulink methods(Access = protected) function [h, m, s] = stepImpl(~, secs) % Add input hours, minutes and seconds to current time d = datetime; d = d + seconds(secs); h = hour(d); m = minute(d); s = second(d); end function [o1, o2, o3] = getOutputSizeImpl(obj) % Return size for output port to be same as input port inSize = propagatedInputSize(obj, 1); o1 = inSize; o2 = inSize; o3 = inSize; end function [o1, o2, o3] = getOutputDataTypeImpl(obj) % Return data type for output port to be same as input port inType = propagatedInputDataType(obj, 1); o1 = inType; o2 = inType; o3 = inType; end function [o1, o2, o3] = isOutputComplexImpl(~) % Return output port complexity to be real o1 = false; o2 = false; o3 = false; end function [o1, o2, o3] = isOutputFixedSizeImpl(~) % Return true for each output port with fixed size o1 = true; o2 = true; o3 = true; end end end
matlab.system.mixin.Propagates