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

  • 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

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

| | | |

Похожие темы