Определите уравнения компонента
equationsExpression1
==Expression2
; end
equations
начинает раздел уравнения в файле компонента; этот раздел отключен end
ключевое слово. Цель раздела уравнения состоит в том, чтобы установить математические отношения среди переменных компонента, параметров, входных параметров, выходных параметров, время и производные времени каждой из этих сущностей. Все участники, объявленные в компоненте, доступны их именем в разделе уравнения.
Раздел уравнения файла Simscape™ выполняется в течение симуляции. Можно также задать уравнения, которые выполняются во время инициализации модели только, при помощи (Initial=true)
атрибут. Для получения дополнительной информации смотрите Начальные уравнения.
Следующий синтаксис определяет простое уравнение.
equations Expression1 == Expression2; end
Оператор
оператор уравнения. Это задает непрерывное математическое равенство между двумя объектами класса Expression1
== Expression2
Expression
. Expression
допустимое выражение MATLAB®. Expression
может быть создан из любого из идентификаторов, заданных в объявлении модели.
Раздел уравнения может содержать несколько операторов уравнения. Можно также задать условные уравнения при помощи if
операторы можно следующим образом:
equations if Expression EquationList { elseif Expression EquationList } else EquationList end end
Общее количество выражений уравнения, их размерности и их порядка должно быть тем же самым для каждой ветви if-elseif-else
оператор.
Можно объявить средние сроки в intermediates
раздел или доменного файла компонента и затем использует эти термины в любом разделе уравнений в том же файле компонента в компоненте составного объекта включения, или в компоненте, который имеет узлы того доменного типа.
Можно также задать средние сроки непосредственно в уравнениях при помощи let
операторы можно следующим образом:
equations let declaration clause in expression clause end end
Пункт объявления присваивает идентификатор или набор идентификаторов, на левой стороне знака "равно" (=
) к выражению уравнения на правой стороне знака "равно":
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 |
(Initial=true)
атрибут позволяет вам задать уравнения, которые выполняются во время инициализации модели только:
equations (Initial=true) Expression1 == Expression2; end
Значение по умолчанию Initial
атрибутом для уравнений является false
, поэтому можно не использовать этот атрибут при объявлении регулярных уравнений.
Для получения дополнительной информации о том, когда, и как задать начальные уравнения, смотрите Начальные уравнения.
Для компонента, где 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