Определите уравнения компонента
equations
Expression1
== Expression2;
end
equations
начинает раздел уравнения в файле компонента; этот раздел отключен ключевым словом end
. Это выполняется в течение симуляции. Цель раздела уравнения состоит в том, чтобы установить математические отношения среди переменных компонента, параметров, входных параметров, выходных параметров, время и производные времени каждой из этих сущностей. Все участники, объявленные в компоненте, доступны их именем в разделе уравнения.
Следующий синтаксис определяет простое уравнение.
equations
Expression1
== Expression2;
end
Оператор Expression1 == Expression2
является оператором уравнения. Это задает непрерывное математическое равенство между двумя объектами класса Expression
. Expression
является любым допустимым выражением MATLAB®, которое не использует ни одного из операторов отношения: ==
, <
, >
, <=
, >=
, ~=
, &&
, ||
. Expression
может быть создан из любого из идентификаторов, заданных в образцовом объявлении.
Раздел уравнения может содержать несколько операторов уравнения. Можно также задать условные уравнения при помощи операторов if
можно следующим образом:
уравнения
если Выражение
ExpressionList
{elseif Выражение
ExpressionList}
еще
ExpressionList
конец
конец
Общее количество выражений уравнения, их размерности и их порядка должно быть тем же самым для каждого ответвления оператора if-elseif-else
.
Можно объявить средние сроки в разделе intermediates
или доменного файла компонента и затем использовать эти термины в любом разделе уравнений в том же файле компонента в компоненте составного объекта включения, или в компоненте, который имеет узлы того доменного типа.
Можно также задать средние сроки непосредственно в уравнениях при помощи операторов let
можно следующим образом:
уравнения
пусть
declaration clause
\in
expression clause
конец
конец
Пункт объявления присваивает идентификатор или набор идентификаторов, на левой стороне знака "равно" (=
) к выражению уравнения на правой стороне знака "равно":
LetValue = EquationExpression
Пункт выражения задает осциллограф замены. Это запускает с ключевого слова in
и может содержать одно или несколько выражений уравнения. Всеми выражениями, присвоенными идентификаторам в пункте объявления, заменяют в уравнения в пункте выражения во время парсинга.
Ключевое слово end
требуется в конце оператора let-in-end
.
Следующие правила применяются к разделу уравнения:
EquationList
является одним или несколькими объектами класса EquationExpression
, разделенный запятой, точкой с запятой или новой строкой.
EquationExpression
может быть одним из:
Expression
Условное выражение (оператор if-elseif-else
)
Позвольте выражению (оператор let-in-end
)
Expression
является любым допустимым выражением MATLAB. Это может быть сформировано со следующими операторами:
Арифметика
Реляционный (с ограничениями, смотрите Использование Операторов отношения в уравнениях),
Логический
Примитивная математика
Индексация
Конкатенация
В разделе уравнения Expression
не может быть сформирован со следующими операторами:
Матричная инверсия
Функции MATLAB, не перечисленные в Поддерживаемых Функциях
Оператор colon
может взять только константы или end
как его операнды.
Все члены компонента доступны в разделе уравнения, но ни один не перезаписываем.
Следующие функции MATLAB могут использоваться в разделе уравнения. Таблица содержит дополнительные ограничения, которые принадлежат только разделу уравнения. Это также указывает, прерывиста ли функция. Если функция прерывиста, она вводит пересечение нулем, когда используется с одним или несколькими непрерывными операндами.
Все аргументы, которые задают размер или размерность, должны быть безразмерными константами или безразмерными параметрами времени компиляции.
Поддерживаемые функции
Имя | Ограничения | Прерывистый |
---|---|---|
ones | ||
zeros | ||
cat | ||
horzcat | ||
vertcat | ||
length | ||
ndims | ||
numel | ||
size | ||
isempty | ||
isequal | Возможно, если аргументы действительны и имеют тот же размер и соразмерные модули | |
isinf | Да | |
isfinite | Да | |
isnan | Да | |
plus | ||
uplus | ||
minus | ||
uminus | ||
mtimes | ||
times | ||
mpower | ||
power | ||
mldivide | Нематричный знаменатель | |
mrdivide | Нематричный знаменатель | |
ldivide | ||
rdivide | ||
mod | Да | |
sum | ||
prod | ||
floor | Да | |
ceil | Да | |
fix | Да | |
round | Да | |
eq | Не используйте с непрерывными переменными | |
ne | Не используйте с непрерывными переменными | |
lt | ||
gt | ||
le | ||
ge | ||
and | Да | |
or | Да | |
logical | Да | |
sin | ||
cos | ||
tan | ||
asin | ||
acos | ||
atan | ||
atan2 | ||
log | ||
log10 | ||
sinh | ||
cosh | ||
tanh | ||
exp | ||
sqrt | ||
abs | Да | |
sign | Да | |
any | Да | |
all | Да | |
min | Да | |
max | Да | |
double | ||
int32 | Да | |
uint32 | Да | |
repmat | ||
reshape | Расширенная пустая размерность не поддержана | |
dot | ||
cross | ||
diff | В двух перегрузках аргумента верхняя граница на втором аргументе равняется 4, из-за ограничения Simscape™ |
Для компонента, где x и y объявляются как 1x1 переменные, задайте уравнение формы y = x 2:
equations y == x^2; end
Для того же компонента задайте следующее кусочное уравнение:
Это уравнение, написанное в языке Simscape, было бы похоже:
equations if x >= -1 && x <= 1 y == x; else y == x^2; end end
Если функция имеет несколько возвращаемых значений, используйте ее в операторе let
, чтобы получить доступ к его значениям. Например:
equations let [m, i] = min(a); in x == m; y == i; end end
assert
| delay
| der
| function
| integ
| intermediates
| tablelookup
| time