Задайте уравнения компонента
equationsExpression1==Expression2; end
equations начинает раздел уравнения в файле компонента; этот раздел завершен end ключевое слово. Цель раздела уравнения состоит в том, чтобы установить математические отношения между переменными компонентами, параметрами, входами, выходами, временем и производными по времени каждой из этих сущностей. Все представители, объявленные в компоненте, доступны по их имени в разделе уравнения.
Раздел уравнения файла Simscape™ выполняется на протяжении всей симуляции. Можно также задать уравнения, которые выполняются только во время инициализации модели, при помощи (Initial=true) атрибут. Для получения дополнительной информации см. «Начальные уравнения».
Следующий синтаксис задает простое уравнение.
equations Expression1 == Expression2; end
Оператор является оператором. Он задает непрерывное математическое равенство между двумя объектами класса Expression1 == Expression2Expression. Система координат 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