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

Введение

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

Смотрите также

Похожие темы