Повторно используйте выражения в уравнениях компонента и в объявлениях представителей областей и компонентов
function out = FunctionName(in1,in2) definitions out = Expression1(in1,in2); end end
The function
ключевое слово начинает объявление функции Simscape™, которое прекращается end
ключевое слово.
Ключевое слово function
за ним должен следовать заголовок функции, который включает в себя имя функции, входы и выходы.
Тело функции должно быть заключено в definitions
блок, который завершается end
ключевое слово. The definitions
блок содержит уравнения, которые выражают выходные аргументы функции в терминах ее входных параметров. Этот блок требуется.
Следующий синтаксис объявляет простую функцию.
function out = FunctionName(in1,in2) definitions out = Expression1(in1,in2); end end
Если функция имеет несколько возвращаемых значений, синтаксис следующий:
function [out1,out2] = FunctionName(in1,in2)
В зависимости от того, является ли функция Simscape основной или локальной функцией:
Основная функция - Вы должны поместить объявление функции в одноименный файл с расширением имени файла .ssc
. Имя файла должно совпадать с именем функции. Для примера используйте функцию foo
должен находиться в файле с именем foo.ssc
. Файл должен начинаться со function
ключевое слово. Предшествовать могут только пустые линии и комментарии function
.
Локальная функция - включать объявление функции в компонент, область или файл функции после окончательного end
ключевое слово, которое завершает описание компонента, области или основной функции. Локальная функция доступна только для этого компонента, области или основной функции.
Допускается использование одного или нескольких выходных параметров.
Если выходной параметр не используется в левой части definitions
section, вы получите ошибку.
Допускается использование нуля или нескольких входных параметров.
Когда функция вызывается, количество входных аргументов должно совпадать с количеством параметров входа.
Входные параметры являются позиционными. Это означает, что первый входной аргумент во время вызова функции передается первому входному параметру и так далее. Для примера, если вы пишете уравнение:
o == FunctionName(5,2);
затем in1
5 и in2
равен 2.
Если функция имеет несколько возвращаемых значений, они также позиционны. То есть первый выходной параметр присваивается первому возвращаемому значению и так далее.
Если функция имеет несколько значений возврата, правила и ограничения те же, что и для функций объявления. Для получения дополнительной информации см. раздел «Несколько возвращаемых значений».
The definitions
раздел может содержать промежуточные термины и if-elseif-else
операторы. Те же синтаксические правила, что и в разделе объявления let
применить оператор. Для получения дополнительной информации см. Использование промежуточных членов в уравнениях.
The definitions
раздел не может содержать выражения с динамической семантикой, такие как integ
, time
, der
, edge
, initialevent
, или delay
.
Файлы функции Simscape могут находиться непосредственно в MATLAB® путь или в директориях пакетов. Для получения дополнительной информации см. раздел «Организация файлов Simscape».
Можно использовать защиту исходного кода, как описано в разделе Использование защиты исходного кода для файлов Simscape.
Импорт пакета импортирует все функции Simscape в этом пакете. Для получения дополнительной информации см. раздел Импорта Области и классы компонентов.
Если функция MATLAB и функция Simscape имеют одинаковое имя, функция MATLAB имеет более высокий приоритет.
Объявить функцию, которая вычисляет квадрат суммы двух чисел:
function out = SumSquared(in1,in2) definitions out = in1^2 + 2*in1*in2 + in2^2; end end
Сохраните функцию в файле с именем SumSquared.ssc
, по пути MATLAB.
Этот компонент вызывает SumSquared
функция для вычисления квадрата суммы ее параметров p1
и p2
.
component MyComp outputs o = 0; end parameters p1 = 5; p2 = 2; end equations o == SumSquared(p1,p2); end end
Более подробный пример объявления и использования основной функции Simscape см. в примере Simscape Functions.
Подробный пример объявления и использования локальной функции Simscape см. в Local Simscape Functions.