Задайте выходные характеристики MATLAB System Block

В этом примере показано, как задать размер выхода, тип данных и сложность блока 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

См. также

| | | |

Похожие темы