В этом примере показано, как задать выходной размер, тип данных и сложность блока 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 не может вывести выходные спецификации автоматически. Системный объект реализует следующие методы, чтобы задать выходные свойства:
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