Использование matlabFunctionBlock
, можно сгенерировать MATLAB® Функциональный блок. Сгенерированный блок доступен для использования в Simulink® модели, имеет ли компьютер, на котором выполняются симуляции, лицензию для Symbolic Math Toolbox™.
Предположим, вы хотите создать модель с символическим выражением r = sqrt(x^2 + y^2)
. Прежде чем вы сможете преобразовать символьное выражение в блок MATLAB Function, создайте пустую модель или откройте существующую:
new_system('my_system') open_system('my_system')
Создайте символическое выражение и передайте его в matlabFunctionBlock
команда. Также укажите имя блока:
syms x y r = sqrt(x^2 + y^2); matlabFunctionBlock('my_system/my_block', r)
Если вы используете имя существующего блока, matlabFunctionBlock
команда заменяет определение существующего блока преобразованным символьным выражением.
Можно открыть и отредактировать сгенерированный блок. Чтобы открыть блок, дважды кликните его.
function r = my_block(x,y) %#codegen r = sqrt(x.^2+y.^2);
Совет
Некоторые символические выражения не могут быть представлены с помощью функций MATLAB. matlabFunctionBlock
невозможно преобразовать эти символические выражения, но выдает предупреждение. Поскольку эти выражения могут привести к неопределенным вызовам функций, всегда проверяйте результаты преобразования и проверяйте результаты путем выполнения симуляции, содержащей полученный блок.
matlabFunctionBlock
генерирует входные переменные и соответствующие входные порты в алфавитном порядке из символьного выражения. Чтобы изменить порядок переменных входов, используйте vars
опция:
syms x y mu = sym('mu'); dydt = -x - mu*y*(x^2 - 1); matlabFunctionBlock('my_system/vdp', dydt,'vars', [y mu x])
По умолчанию matlabFunctionBlock
генерирует имена выходных портов как слово out
далее следует номер выходного порта, например out3
. The output
опция позволяет использовать пользовательские имена выходных портов:
syms x y mu = sym('mu'); dydt = -x - mu*y*(x^2 - 1); matlabFunctionBlock('my_system/vdp', dydt,'outputs',{'name1'})