Создайте новую модель Simulink® и добавьте блок MATLAB function к модели от библиотеки User-Defined Functions:
Добавьте следующие блоки Источника и Приемника к модели:
От библиотеки Sources добавьте блок Constant слева от блока MATLAB function и установите его значение к векторному [2 3 4 5]
.
От библиотеки Sinks добавьте два блока Отображения справа от блока MATLAB function.
В Редакторе Simulink выберите File> Save As и сохраните модель как call_stats_block1
.
Следующее осуществление демонстрирует программирование блока, чтобы вычислить среднее и стандартное отклонение для вектора значений:
Откройте модель call_stats_block1
, которую вы сохранили в конце Добавления блока MATLAB function к Модели. Дважды кликните блок MATLAB function fcn
, чтобы открыть его для редактирования.
Появляется функциональная подпись по умолчанию.
Отредактируйте функциональную строку заголовка:
function [mean,stdev] = stats(vals)
Функциональный stats
вычисляет статистическое среднее и стандартное отклонение для значений в векторном vals
. Функциональный заголовок объявляет vals
в качестве аргумента к функции stats
с mean
и stdev
как возвращаемые значения.
Сохраните модель как call_stats_block2
.
Завершите связи с блоком MATLAB function как показано.
В Редакторе блока MATLAB function введите пробел строки после функционального заголовка и добавьте следующий код:
% calculates a statistical mean and a standard % deviation for the values in vals. len = length(vals); mean = avg(vals,len); stdev = sqrt(sum(((vals-avg(vals,len)).^2))/len); plot(vals,'-+'); function mean = avg(array,size) mean = sum(array)/size;
Сохраните модель как call_stats_block2
.
После программирования блока MATLAB function в модели Simulink можно создать функцию и протестировать на ошибки. В этом разделе описываются шаги:
Создание вашего блока MATLAB function требует поддерживаемого компилятора. MATLAB автоматически выбирает тот как компилятор по умолчанию. Если у вас есть несколько поддерживаемых MATLAB компиляторов, установленных в вашей системе, можно изменить значение по умолчанию с помощью команды mex -setup
. См. Компилятор Значения по умолчанию Изменения (MATLAB).
Поддерживаемые Компиляторы для Сборок Моделирования. Просмотреть список компиляторов для создания моделей, содержащих блоки MATLAB function для моделирования:
Перейдите к Поддерживаемой и Совместимой веб-странице Компиляторов.
Выберите свою платформу.
В таблице для Simulink и сопутствующих товаров, найдите, что компиляторы зарегистрировались в столбце, названном Simulink для блоков MATLAB function.
Поддерживаемые Компиляторы для Генерации кода. Чтобы сгенерировать код для моделей, которые содержат блоки MATLAB function, можно использовать любой из компиляторов C, поддержанных программным обеспечением Simulink для генерации кода с Simulink Coder™. Для списка этих компиляторов:
Перейдите к Поддерживаемой и Совместимой веб-странице Компиляторов.
Выберите свою платформу.
В таблице для Simulink и сопутствующих товаров, найдите, что компиляторы зарегистрировались в названном Simulink Coder столбца.
Откройте модель call_stats_block2
, которую вы сохранили в конце Программирования блока MATLAB function.
Дважды кликните его блок MATLAB function stats
, чтобы открыть его для редактирования.
В Редакторе блока MATLAB function выберите Build Model> Build, чтобы скомпилировать и создать модель в качестве примера.
Если никакие ошибки не происходят, окно Simulation Diagnostics отображает сообщение, указывающее на успех. В противном случае это окно помогает вам определить местоположение ошибок, как описано в том, Как Определить местоположение и Зафиксировать Ошибки.
Если ошибки происходят во время процесса сборки, окно Simulation Diagnostics перечисляет ошибки со ссылками на незаконный код.
Следующее осуществление показывает, как определить местоположение и зафиксировать ошибку в блоке MATLAB function.
В функции stats
измените локальную функцию avg
на фиктивную локальную функцию aug
и затем скомпилируйте снова, чтобы видеть следующие сообщения в окне:
Окно Simulation Diagnostics отображает каждую обнаруженную ошибку с красной кнопкой.
Кликните по первой ошибочной строке, чтобы отобразить ее диагностическое сообщение в нижнем ошибочном окне.
Сообщение также соединяется с отчетом об информации о типе времени компиляции для переменных и выражений в ваших функциях MATLAB. Эта информация помогает вам диагностировать сообщения об ошибке и понять правила распространения типа. Для получения дополнительной информации об отчете, см. Отчеты функции MATLAB.
В диагностическом сообщении для выбранной ошибки щелкните по синей ссылке после имени функции, чтобы отобразить незаконный код.
Незаконная строка кажется подсвеченной в Редакторе блока MATLAB function:
Исправьте ошибку путем возврата aug
к avg
и перекомпилируйте.
В заголовке функции stats
для блока MATLAB function вы задали в Программировании блока MATLAB function, аргумент функции, vals
является входным параметром, и mean
и stdev
являются выходные параметры. По умолчанию входные параметры функции и выходные параметры наследовали свой тип данных и размер от сигналов, присоединенных к их портам. В этой теме вы исследуете данные ввода и вывода на блок MATLAB function, чтобы проверить, что это наследовало правильный тип и размер.
Откройте модель call_stats_block2
, которую вы сохранили в конце Программирования блока MATLAB function. Дважды кликните блок MATLAB function stats
, чтобы открыть его для редактирования.
В Редакторе блока MATLAB function выберите Edit Data.
Порты и Менеджер данных открываются, чтобы помочь вам задать аргументы для блоков MATLAB function.
Левая панель отображает аргумент vals
и возвращаемые значения mean
и stdev
, который вы уже создали для блока MATLAB function. Заметьте, что vals
присвоен Осциллограф Input
, который является сокращением от Входного параметра от Simulink. mean
и stdev
присвоены Осциллограф Output
, который является сокращением от Вывода к Simulink.
На левой панели Портов и Менеджера данных, щелкните где угодно в строке для vals
, чтобы подсветить его.
Правая панель отображает диалоговое окно Свойств данных для vals
. По умолчанию класс, размер, модули и сложность аргументов ввода и вывода наследованы от сигналов, присоединенных к каждому порту ввода или вывода. Наследование задано установкой Size к -1
, Сложностью к Inherited
и Типом к Inherit: Same as Simulink
.
Фактические наследованные значения для размера и типа устанавливают во время компиляции модели и сообщают в Скомпилированном Типе и Скомпилированных столбцах Размера левой панели.
Можно задать тип аргумента ввода или вывода путем выбора типа в поле Type диалогового окна Свойств данных, например, double
. Можно также задать размер аргумента ввода или вывода путем ввода выражения в поле Size. Например, можно ввести [2 3]
в поле Size, чтобы задать vals
как 2 3 матрица. Смотрите Аргументы функции Типа и Аргументы функции Размера для получения дополнительной информации о выражениях, что можно ввести для типа и размера.
Значение по умолчанию сначала индексирует для любых массивов, которые вы добавляете к функции блока MATLAB function, 1
, как это было бы в MATLAB.
Если вы намереваетесь сгенерировать код из алгоритма MATLAB в блоке MATLAB function, необходимо явным образом присвоить класс, размер и сложность локальных переменных перед использованием их в операциях или возврате их как выходные параметры (см. Определение данных для Генерации кода). В функции, взятой в качестве примера, stats
локальная переменная len
задан прежде чем быть раньше вычислить среднее и стандартное отклонение:
len = length(vals);
Обычно, если вы присваиваете свойства переменной, вы не можете переопределить ее класс, размер или сложность в другом месте в теле функции, но существуют исключения (см. Перевод по службе Variable Properties).