Задайте уравнения компонента
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
, и может содержать одно или несколько выражений уравнения. Все выражения, присвоенные идентификаторам в предложении объявления, подставляются в уравнения в предложении выражения во время анализа.
Примечание
The end
ключевое слово требуется в конце let-in-end
оператор.
К разделу уравнения применяются следующие правила:
EquationList
является одним или несколькими объектами класса EquationExpression
, разделенный запятыми, точкой с запятой или новой строкой.
EquationExpression
может быть одним из:
Expression
Условное выражение (if-elseif-else
оператор)
Предположим, что выражение (let-in-end
оператор)
Expression
- любое допустимое выражение MATLAB. Он может быть сформирован со следующими операторами:
Арифметика
Реляционные (с ограничениями, см. Использование реляционных операторов в уравнениях)
Логичный
Примитивная математика
Индексация
Конкатенация
В разделе уравнения Expression
не может быть сформирован со следующими операторами:
Инверсия матрицы
Функции MATLAB, не перечисленные в Поддерживаемых Функциях
The 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 |
The (Initial=true)
позволяет вам задать уравнения, которые выполняются только во время инициализации модели:
equations (Initial=true) Expression1 == Expression2; end
Значение по умолчанию для Initial
атрибут для уравнений false
, поэтому можно опустить этот атрибут при объявлении правильных уравнений.
Для получения дополнительной информации о том, когда и как задать начальные уравнения, см. «Начальные уравнения».
Для компонента, где x и y объявлены как переменные 1x1, задайте уравнение вида y = x2:
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