Можно использовать Системные объекты в модели, чтобы моделировать в Simulink®.
Создайте Систему object™, чтобы использоваться в вашей модели. Смотрите Задают Новые Системные объекты для Использования в Simulink для получения информации.
Протестируйте свой новый Системный объект в MATLAB®. Смотрите Тест Новые Системные объекты в MATLAB
Добавьте Системный объект в свою модель при помощи блока MATLAB System. Смотрите Добавляют Системные объекты к Вашей Модели Simulink для получения информации.
Добавьте другие блоки Simulink по мере необходимости и соедините блоки, чтобы создать вашу систему.
Запустите систему
Системный объект является компонентом, который можно использовать, чтобы создать систему в MATLAB. Можно написать код в MATLAB и использовать тот код, чтобы создать блок в Simulink. Чтобы задать ваш собственный Системный объект, вы записываете файл определения класса, который является основанным на тексте файлом MATLAB, который содержит код, задающий ваш объект. Смотрите Интегрируют Системные объекты Используя MATLAB System Block.
Создайте Системный объект для использования в Simulink. Пример выполняет систему идентификации с помощью наименьшее количество средних квадратичных (LMS) адаптивный фильтр.
Создайте текстовый файл определения класса, чтобы задать ваш Системный объект. Код в этом примере создает фильтр наименьшее количество средних квадратичных (LMS) и включает индивидуальные настройки в значок блока и внешний вид диалогового окна. Это подобно System Identification Используя Системные Блоки MATLAB пример Simulink.
Вместо того, чтобы вручную создать ваш файл определения класса, можно использовать пункт меню New> System Object> Simulink Extension открыть шаблон. Этот шаблон включает индивидуальные настройки Системного объекта для использования в блоке Simulink MATLAB System. Вы редактируете файл шаблона, с помощью него в качестве инструкции, чтобы создать собственный Системный объект.
На первой строке файла определения класса задайте имя своего Системного объекта и подкласса и от matlab.System
и от matlab.system.mixin.CustomIcon
. Базовый класс matlab.System
позволяет вам использовать все методы объекта базовой системы и задать имена ввода и вывода блока, заголовок и группы свойства. Класс mixin CustomIcon
включает метод, который позволяет вам задать значок блока.
Добавьте соответствующие методы объекта базовой системы настроить, сбросить, определить номер вводов и выводов и запустить ваш алгоритм. Смотрите страницы с описанием для каждого метода и полного файла определения класса ниже для реализации каждого из этих методов.
Используйте метод setupImpl
, чтобы выполнить одноразовые вычисления и инициализировать переменные.
Используйте метод stepImpl
, чтобы реализовать алгоритм блока.
Используйте метод resetImpl
, чтобы сбросить свойства DiscreteState
или государственная собственность.
Используйте getNumInputsImpl
и методы getNumOutputsImpl
, чтобы задать количество вводов и выводов, соответственно.
Добавьте соответствующие методы CustomIcon
, чтобы задать внешний вид блока MATLAB System в Simulink. Смотрите страницы с описанием для каждого метода и полного файла определения класса ниже для реализации каждого из этих методов.
Используйте метод getHeaderImpl
, чтобы задать заголовок и описание, чтобы отобразиться на диалоговом окне блока.
Используйте метод getPropertyGroupsImpl
, чтобы задать группы свойств отобразиться на диалоговом окне блока.
Используйте метод getIconImpl
, чтобы задать текст, чтобы отобразиться на значке блока.
Используйте getInputNamesImpl
и методы getOutputNamesImpl
, чтобы задать метки, чтобы отобразиться для портов ввода и вывода блока.
Полный файл определения класса для наименьшего количества фильтра средних квадратичных:
classdef lmsSysObj < matlab.System &... matlab.system.mixin.CustomIcon % lmsSysObj Least mean squares (LMS) adaptive filtering. % #codegen properties % Mu Step size Mu = 0.005; end properties (Nontunable) % Weights Filter weights Weights = 0; % N Number of filter weights N = 32; end properties (DiscreteState) X; H; end methods (Access = protected) function setupImpl(obj) obj.X = zeros(obj.N,1); obj.H = zeros(obj.N,1); end function [y, e_norm] = stepImpl(obj,d,u) tmp = obj.X(1:obj.N-1); obj.X(2:obj.N,1) = tmp; obj.X(1,1) = u; y = obj.X'*obj.H; e = d-y; obj.H = obj.H + obj.Mu*e*obj.X; e_norm = norm(obj.Weights'-obj.H); end function resetImpl(obj) obj.X = zeros(obj.N,1); obj.H = zeros(obj.N,1); end end % Block icon and dialog customizations methods (Static, Access = protected) function header = getHeaderImpl header = matlab.system.display.Header(... 'lmsSysObj', ... 'Title', 'LMS Adaptive Filter'); end function groups = getPropertyGroupsImpl upperGroup = matlab.system.display.SectionGroup(... 'Title','General',... 'PropertyList',{'Mu'}); lowerGroup = matlab.system.display.SectionGroup(... 'Title','Coefficients', ... 'PropertyList',{'Weights','N'}); groups = [upperGroup,lowerGroup]; end end methods (Access = protected) function icon = getIconImpl(~) icon = sprintf('LMS Adaptive\nFilter'); end function [in1name, in2name] = getInputNamesImpl(~) in1name = 'Desired'; in2name = 'Actual'; end function [out1name, out2name] = getOutputNamesImpl(~) out1name = 'Output'; out2name = 'EstError'; end end end
Создайте Системный объект для использования в Simulink. Пример выполняет систему идентификации с помощью наименьшее количество средних квадратичных (LMS) адаптивный фильтр и использует обратную связь.
Создайте текстовый файл определения класса, чтобы задать ваш Системный объект. Код в этом примере создает целочисленную задержку и включает обратную связь и индивидуальные настройки к значку блока. Для получения информации об обратной связи смотрите Системные объекты Использования в Обратной связи. Этот пример реализует Системный объект, который можно использовать для непрямого сквозного соединения. Это подобно System Identification Используя Системные Блоки MATLAB пример Simulink.
На первой строке файла определения класса разделите на подклассы от matlab.System
и matlab.system.mixin.CustomIcon
. Базовый класс matlab.System
позволяет вам использовать все методы объекта базовой системы и задать имена ввода и вывода блока, заголовок и группы свойства. Класс mixin CustomIcon
включает метод, который позволяет вам задать значок блока. Mixin Nondirect
включает методы, которые позволяют вам задать, как блок обновляется и что это выводит.
Добавьте соответствующие методы объекта базовой системы настроить и сбросить объект и установить и подтвердить свойства. Начиная с этого поддержка объектов непрямое сквозное соединение вы не реализуете метод stepImpl
. Вы реализуете updateImpl
и методы outputImpl
вместо этого. Смотрите страницы с описанием для каждого метода и полного файла определения класса ниже для реализации каждого из этих методов.
Используйте метод setupImpl
, чтобы инициализировать некоторые свойства объекта.
Используйте метод resetImpl
, чтобы сбросить состояния свойства.
Используйте метод validatePropertiesImpl
, чтобы проверять, что значения свойств допустимы.
Добавьте следующие методы класса mixin Nondirect
вместо метода stepImpl
, чтобы задать, как блок обновляет свое состояние и свой вывод. Смотрите страницы с описанием и полный файл определения класса ниже для реализации каждого из этих методов.
Используйте метод outputImpl
, чтобы реализовать код, чтобы вычислить блок вывод.
Используйте метод updateImpl
, чтобы реализовать код, чтобы обновить внутренние состояния блока.
Используйте метод isInputDirectFeedthroughImpl
, чтобы указать, что блок не является прямым сквозным соединением. Его входные параметры непосредственно не влияют на его выходные параметры.
Добавьте метод getIconImpl
, чтобы задать значок блока, когда это будет использоваться в Simulink через блок MATLAB System. Смотрите страницу с описанием и полный файл определения класса ниже для реализации этого метода.
Полный файл определения класса для задержки:
classdef intDelaySysObj < matlab.System &... matlab.system.mixin.Nondirect &... matlab.system.mixin.CustomIcon % intDelaySysObj Delay input by specified number of samples. % #codegen properties % InitialOutput Initial output InitialOutput = 0; end properties (Nontunable) % NumDelays Number of delays NumDelays = 1; end properties (DiscreteState) PreviousInput; end methods (Access = protected) function setupImpl(obj, ~) obj.PreviousInput = ones(1,obj.NumDelays)*obj.InitialOutput; end function [y] = outputImpl(obj, ~) % Output does not directly depend on input y = obj.PreviousInput(end); end function updateImpl(obj, u) obj.PreviousInput = [u obj.PreviousInput(1:end-1)]; end function flag = isInputDirectFeedthroughImpl(~,~) flag = false; end function validatePropertiesImpl(obj) if ((numel(obj.NumDelays)>1) || (obj.NumDelays <= 0)) error('Number of delays must be positive non-zero ... scalar value.'); end if (numel(obj.InitialOutput)>1) error('Initial output must be scalar value.'); end end function resetImpl(obj) obj.PreviousInput = ones(1,obj.NumDelays)*obj.InitialOutput; end function icon = getIconImpl(~) icon = sprintf('Integer\nDelay'); end end end
Создайте экземпляр своего нового Системного объекта. Например, создайте экземпляр lmsSysObj
.
s = lmsSysObj;
Запустите объект многократно с различными входными параметрами. Выполнение этого шага тестирует на синтаксические ошибки и другие возможные проблемы, прежде чем вы добавите его в Simulink. Например,
desired = 0; actual = 0.2; s(desired,actual);
Добавьте свои Системные объекты в вашу модель Simulink при помощи блока MATLAB System, как описано в Отображении Системных объектов, чтобы Блокировать Диалоговое окно.
Добавьте другие блоки Simulink, соедините их и сконфигурируйте любые необходимые параметры, чтобы завершить вашу модель, как описано в документации Simulink. Смотрите System Identification для КИХ-Системы Используя Системные Блоки MATLAB пример Simulink.
Запустите свою модель таким же образом, вы запускаете любую модель Simulink.