В этом примере показано, как задать размер выхода, тип данных и сложность блока MATLAB System.
Системные объекты позволяют вам реализовать алгоритмы с помощью MATLAB. Системные объекты являются специализированным видом объекта MATLAB, разработанным специально для реализации и симуляции динамических систем с входами, которые изменяются с течением времени.
После того, как вы задаете Системный объект, можно включить его в модель Simulink с помощью блока MATLAB System.
Этот пример имеет блок MATLAB System, который добавляет входное количество секунд к текущему времени и производит получившиеся часы, минуты и секунды в качестве выходов. Значения выхода от каждого порта выхода отображаются в блоках Отображения.
В этом примере показано, как задать размер выхода, тип данных и сложность системного объекта. Вы задаете выходные свойства, когда блок MATLAB System не может вывести их автоматически. Блок MATLAB System использует системный объект PropagateOutputSpecs
который реализует методы для распространения типа, размера и сложности входных данных.
Вы можете получить доступ к исходному коду MATLAB, используемому блоком MATLAB System, нажав гиперссылку «Source code» из диалогового окна блока. Системный объект PropagateOutputSpecs
реализует stepImpl
метод, который добавляет значение входа в секундах к текущему времени и выводит полученные часы, минуты и секунды. The stepImpl
метод использует datetime
функция для вычисления ее выхода. Начиная с datetime
функция не поддерживается для генерации кода, блок MATLAB System не может автоматически выводить выходные спецификации. Для задания выхода свойств Системного объекта реализует следующие методы:
getOutputSizeImpl
- Задайте размер выхода
getOutputDataTypeImpl
- Задайте тип выходных данных
isOutputComplexImpl
- Задайте выходную сложность
isOutputFixedSizeImpl
- Укажите, может ли вывод быть переменного размера
classdef PropagateOutputSpecs < matlab.System % PropagateOutputSpecs Propagation in 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
getOutputDataTypeImpl
| getOutputSizeImpl
| getOutputSizeImpl
| isOutputComplexImpl
| isOutputFixedSizeImpl