exponenta event banner

Определение выходных характеристик системного блока MATLAB

В этом примере показано, как указать размер вывода, тип данных и сложность системного блока MATLAB.

Системные объекты

Системные объекты позволяют реализовать алгоритмы с помощью MATLAB. Системные объекты - специализированный вид объектов MATLAB, разработанный специально для реализации и моделирования динамических систем с вводами, изменяющимися с течением времени.

После определения объекта System его можно включить в модель Simulink с помощью блока MATLAB System.

Описание модели

В этом примере имеется системный блок MATLAB, который добавляет входное количество секунд к текущему времени и выдает полученные часы, минуты и секунды в качестве выходных данных. Выходные значения каждого выходного порта отображаются в блоках отображения.

В этом примере показано, как указать размер вывода, тип данных и сложность объекта System. Свойства вывода задаются, когда блок MATLAB System не может выводить их автоматически. Системный блок MATLAB использует системный объект PropagateOutputSpecs реализует методы распространения входных данных типа, размера и сложности.

Определение класса системных объектов

Доступ к исходному коду MATLAB, используемому системным блоком MATLAB, можно получить, щелкнув гиперссылку «Исходный код» в диалоговом окне блока. Системный объект 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

См. также

| | | |

Связанные темы