Определение уравнений компонентов
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
Предложение expression определяет область подстановки. Начинается с ключевого слова 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 = x2:
equations y == x^2; end
Для того же компонента задайте следующее кусочное уравнение:
1x2otherwise
Это уравнение, написанное на языке 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