matlabFunctionBlock

Преобразуйте символьное выражение в блок MATLAB function

Синтаксис

matlabFunctionBlock(block,f)
matlabFunctionBlock(block,f1,...,fN)
matlabFunctionBlock(___,Name,Value)

Описание

пример

matlabFunctionBlock(block,f) преобразовывает f в функциональный блок MATLAB®, который можно использовать в моделях Simulink®. Здесь, f может быть символьным выражением, функцией или вектором символьных выражений или функций.

block задает имя блока, который вы создаете или изменяете.

пример

matlabFunctionBlock(block,f1,...,fN) преобразовывает символьные выражения или функции f1,...,fN к блоку MATLAB function с N выходные параметры. Каждый элемент f1,...,fN может быть символьным выражением, функцией или вектором символьных выражений или функций.

пример

matlabFunctionBlock(___,Name,Value) преобразовывает символьное выражение, функцию или вектор символьных выражений или функций к блоку MATLAB function с помощью дополнительных опций, заданных одним или несколькими аргументами пары Name,Value. Можно задать Name,Value после того, как входные параметры использовали в предыдущих синтаксисах.

Примеры

свернуть все

Создайте новую модель и преобразуйте символьное выражение в блок MATLAB function. Включайте комментарии в блок путем определения опции Comments.

Создайте новую модель и откройте ее.

new_system('my_system')
open_system('my_system')

Создайте символьное выражение.

syms x y z
f = x^2 + y^2 + z^2;

Используйте matlabFunctionBlock, чтобы создать блок my_block, содержащий символьное выражение. matlabFunctionBlock перезаписывает существующие блоки. Дважды кликните сгенерированный блок, чтобы открыть и отредактировать функцию, задающую блок.

matlabFunctionBlock('my_system/my_block',f)
function f = my_block(x,y,z)
%#codegen

%    This function was generated by the Symbolic Math Toolbox version 7.3.
%    01-Jan-2017 00:00:00

f = x.^2+y.^2+z.^2;

Включайте комментарий Version 1.1 в блок.

matlabFunctionBlock('my_system/my_block',f,'Comments','Version: 1.1')
function f = my_block(x,y,z)
...
%Version: 1.1
f = x.^2+y.^2+z.^2;

Сохраните и закройте my_system.

save_system('my_system')
close_system('my_system')

Создайте новую модель и преобразуйте символьную функцию в блок MATLAB function.

Создайте новую пустую модель и откройте ее.

new_system('my_system')
open_system('my_system')

Создайте символьную функцию.

syms x y z
f(x, y, z) = x^2 + y^2 + z^2;

Преобразуйте f в блок MATLAB function. Дважды кликните блок, чтобы видеть функцию.

matlabFunctionBlock('my_system/my_block',f)
function f = my_block(x,y,z)
%#codegen
f = x.^2+y.^2+z.^2;

Преобразуйте несколько символьных выражений в блок MATLAB function с несколькими выходными портами.

Создайте новую пустую модель и откройте ее.

new_system('my_system')
open_system('my_system')

Создайте три символьных выражения.

syms x y z
f = x^2;
g = y^2;
h = z^2;

Преобразуйте их в блок MATLAB function. matlabFunctionBlock создает блок с тремя выходными портами. Дважды кликните блок, чтобы видеть функцию.

matlabFunctionBlock('my_system/my_block',f,g,h)
function [f,g,h] = my_block(x,y,z)
%#codegen
f = x.^2;
if nargout > 1
    g = y.^2;
end
if nargout > 2
    h = z.^2;
end

Определение имени функции, задающей сгенерированный блок MATLAB function.

Создайте новую пустую модель и откройте ее.

new_system('my_system')
open_system('my_system')

Создайте символьное выражение.

syms x y z
f = x^2 + y^2 + z^2;

Сгенерируйте блок и определите имя функции к my_function. Дважды кликните блок, чтобы видеть функцию.

matlabFunctionBlock('my_system/my_block',f,...
                    'FunctionName', 'my_function')
function f = my_function(x,y,z)
%#codegen
f = x.^2+y.^2+z.^2;

Когда вы преобразовываете символьное выражение в блок MATLAB function, matlabFunctionBlock оптимизирует код по умолчанию. Этот подход может помочь упростить и ускорить дальнейшие вычисления, которые используют файл. Тем не менее, генерация оптимизированного кода от некоторых символьных выражений и функций может быть очень длительной. Используйте Optimize, чтобы отключить оптимизацию кода.

Создайте новую пустую модель и откройте ее.

new_system('my_system')
open_system('my_system')

Создайте символьное выражение.

syms x
r = x^2*(x^2 + 1);

Используйте matlabFunctionBlock, чтобы создать блок my_block, содержащий символьное выражение. Дважды кликните блок, чтобы видеть, что функция задает блок. По умолчанию matlabFunctionBlock создает файл, содержащий оптимизированный код.

matlabFunctionBlock('my_system/my_block',r)
function r = my_block(x)
%#codegen
t2 = x.^2;
r = t2.*(t2+1.0);

Отключите оптимизацию кода путем устанавливания значения Optimize к false.

matlabFunctionBlock('my_system/my_block',r,...
                    'Optimize',false)
function r = my_block(x)
%#codegen
r = x.^2.*(x.^2+1.0);

Задайте порядок входных переменных, которые формируют входные порты в сгенерированном блоке.

Создайте новую пустую модель и откройте ее.

new_system('my_system')
open_system('my_system')

Создайте символьное выражение.

syms x y z
f = x^2 + y^2 + z^2;

Преобразуйте выражение в блок MATLAB function. По умолчанию matlabFunctionBlock использует алфавитный порядок входных параметров при преобразовании символьных выражений.

matlabFunctionBlock('my_system/my_block',f)
function f = my_block(x,y,z)
%#codegen
f = x.^2+y.^2+z.^2;

Используйте аргумент Vars, чтобы задать порядок входных портов.

matlabFunctionBlock('my_system/my_block',f,...
                    'Vars', [y z x])
function f = my_block(y,z,x)
%#codegen
f = x.^2+y.^2+z.^2;

При генерации блока переименуйте выходные переменные и соответствующие порты.

Создайте новую пустую модель и откройте ее.

new_system('my_system')
open_system('my_system')

Создайте символьное выражение.

syms x y z
f = x^2 + y^2 + z^2;

Преобразуйте выражение в блок MATLAB function и задайте имена выходных переменных и портов. Дважды кликните блок, чтобы видеть, что функция задает блок.

matlabFunctionBlock('my_system/my_block',f,f + 1,f + 2,...
                    'Outputs', {'name1','name2','name3'})
function [name1,name2,name3] = my_block(x,y,z)
%#codegen
t2 = x.^2;
t3 = y.^2;
t4 = z.^2;
name1 = t2+t3+t4;
if nargout > 1
    name2 = t2+t3+t4+1.0;
end
if nargout > 2
    name3 = t2+t3+t4+2.0;
end

Вызовите matlabFunctionBlock с помощью нескольких аргументов пары "имя-значение" одновременно.

Создайте новую пустую модель и откройте ее.

new_system('my_system')
open_system('my_system')

Создайте символьное выражение.

syms x y z
f = x^2 + y^2 + z^2;

Вызовите matlabFunctionBlock с помощью аргументов пары "имя-значение", чтобы задать имя функции, порядок входных портов и имена выходных портов. Дважды кликните блок, чтобы видеть, что функция задает блок.

matlabFunctionBlock('my_system/my_block',f,f + 1,f + 2,...
                    'FunctionName', 'my_function','Vars',[y z x],...
                    'Outputs',{'name1','name2','name3'})
function [name1,name2,name3] = my_function(y,z,x)
%#codegen
t2 = x.^2;
t3 = y.^2;
t4 = z.^2;
name1 = t2+t3+t4;
if nargout > 1
    name2 = t2+t3+t4+1.0;
end
if nargout > 2
    name3 = t2+t3+t4+2.0;
end

Входные параметры

свернуть все

Блокируйтесь, чтобы создать, изменяют, заданный как вектор символов.

Символьный вход, который будет преобразован в блок MATLAB function, заданный как символьное выражение, функция, вектор или матрица

Символьный вход, который будет преобразован в блок MATLAB function с N выходные параметры, заданные как несколько символьных выражений, функций, векторов или матриц, разделенных запятой.

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: matlabFunctionBlock('my_system/my_block',f,'FunctionName','myfun')

Комментарии, чтобы включать в заголовок файла, заданный как вектор символов, массив ячеек из символьных векторов или вектор строки.

Имя функции, заданное как вектор символов. По умолчанию matlabFunction(block,…) использует block в качестве имени функции.

Смотрите задают имя функции для сгенерированной функции.

Отметьте предотвращение оптимизации кода, заданной как false или true.

При записи в файл matlabFunctionBlock оптимизирует код с помощью промежуточных переменных под названием t0, t1....

Смотрите отключают оптимизацию кода.

Порядок входных переменных и соответствующие входные порты сгенерированного блока, заданного как вектор символов, вектор символьных переменных или одномерный массив ячеек из символьных векторов, символьных переменных или векторов символьных переменных.

Количество заданных входных портов должно равняться или превысить количество свободных переменных в f. Не используйте те же имена для входных портов, заданных Vars и выходными портами, заданными Outputs.

По умолчанию, когда вы преобразовываете символьные выражения, порядок является алфавитным. Когда вы преобразовываете символьные функции, их входные параметры появляются перед другими переменными, и все другие переменные сортируются в алфавитном порядке.

Смотрите задают входные порты для сгенерированного блока.

Имена выходных портов, заданных как одномерный массив ячеек из символьных векторов. Если вы не задаете имена выходного порта, имена использования matlabFunctionBlock, которые состоят из слова out, сопровождаемый числами выходного порта, например, out3.

Не используйте те же имена для входных портов, заданных Vars и выходными портами, заданными Outputs. Смотрите Задают Выходные порты.

Представленный в R2009a