equations
Define component or domain equations
Parent Section: component | domain
Syntax
equationsExpression1==Expression2; end
Description
equations begins the equation section in a component or domain
file; this section is terminated by an end keyword.
In a component file, the equations section establishes the
mathematical relationships between the component variables, parameters, inputs, outputs,
time, and the time derivatives of each of these entities. All members declared in the
component are available by their name in the equations
section.
Similarly, the equations section in a domain file establishes the
mathematical relationships between the domain Across variables, parameters, and
intermediates. Use the domain equations when your custom domain has more Across
variables than Through variables. For more information, see Domain Equations.
The equations section of a Simscape™ file is executed throughout the simulation. You can also specify equations
that are executed during model initialization only, by using the
(Initial=true) attribute. For more information, see Initial Equations.
The following syntax defines a simple equation.
equations
Expression1 == Expression2;
endThe statement is an equation statement. It
specifies continuous mathematical equality between two objects of class
Expression1 ==
Expression2Expression. An Expression is a valid
MATLAB® expression. Expression may be constructed from any of
the identifiers defined in the model declaration.
The equations section may contain multiple equation statements. You
can also specify conditional equations by using if statements as
follows:
equations
if Expression
EquationList
{ elseif Expression
EquationList }
else
EquationList
end
endNote
The total number of equation expressions, their dimensionality, and their order
must be the same for every branch of the if-elseif-else
statement.
You can declare intermediate terms in the intermediates section of a component or domain file and then use
these terms in any equations section in the same component file, in
an enclosing composite component, or in a component that has nodes of that domain type.
You can also define intermediate terms directly in equations by using
let statements as follows:
equations
let
declaration clause
in
expression clause
end
endThe declaration clause assigns an identifier, or set of identifiers, on the left-hand
side of the equal sign (=) to an equation expression on the
right-hand side of the equal sign:
LetValue = EquationExpression
The expression clause defines the scope of the substitution. It starts with the
keyword in, and may contain one or more equation expressions. All the
expressions assigned to the identifiers in the declaration clause are substituted into
the equations in the expression clause during parsing.
Note
The end keyword is required at the end of a
let-in-end statement.
The following rules apply to the equations section:
EquationListis one or more objects of classEquationExpression, separated by a comma, semicolon, or newline.
EquationExpressioncan be one of:ExpressionConditional expression (
if-elseif-elsestatement)Let expression (
let-in-endstatement)
Expressionis any valid MATLAB expression. It may be formed with the following operators:Arithmetic
Relational (with restrictions, see Use of Relational Operators in Equations)
Logical
Primitive math
Indexing
Concatenation
In the
equationssection,Expressionmay not be formed with the following operators:Matrix inversion
MATLAB functions not listed in Supported Functions
The
colonoperator only accepts constants orendas its operands.All members of the component are accessible in the
equationssection, but none are writable.
Supported Functions
You can use these MATLAB functions in the equations section. The table
contains additional restrictions that pertain only to the
equations section. It also indicates whether a function is
discontinuous. If the function is discontinuous, it introduces a zero-crossing when
used with one or more continuous operands.
All arguments that specify size or dimension must be unitless constants or unitless compile-time parameters. For array operations, two operands must be of the same size, or one must be a scalar.
Supported Functions
| Name | Restrictions | Discontinuous |
|---|---|---|
ones | ||
zeros | ||
cat | ||
horzcat | ||
vertcat | ||
length | ||
ndims | ||
numel | ||
size | ||
isempty | ||
isequal | Possibly, if arguments are real and have the same size and commensurate units | |
isinf | Yes | |
isfinite | Yes | |
isnan | Yes | |
plus | ||
uplus | ||
minus | ||
uminus | ||
mtimes | ||
times | ||
mpower | ||
power | ||
mldivide | First argument must be a scalar | |
mrdivide | Second argument must be a scalar | |
ldivide | ||
rdivide | ||
mod | Yes | |
sum | ||
cumsum | direction and nanflag
arguments are not supported | |
movsum | nanflag and Name=Value
arguments are not supported | |
prod | ||
floor | Yes | |
ceil | Yes | |
fix | Yes | |
round | Yes | |
eq | Do not use with continuous variables | |
ne | Do not use with continuous variables | |
lt | ||
gt | ||
le | ||
ge | ||
and | Yes | |
or | Yes | |
logical | Yes | |
sin | ||
cos | ||
tan | ||
asin | ||
acos | ||
atan | ||
atan2 | Yes | |
sinh | ||
cosh | ||
tanh | ||
asinh | ||
acosh | ||
atanh | ||
log | ||
log10 | ||
exp | Limiting applied during initialization and simulation to avoid
nonfinite (Inf or NaN) values. Limiting is not applied when
exp is used as an argument inside functions
such as isinf, isnan, or
isfinite, to ensure the correct predicate
evaluation. | |
sqrt | ||
abs | Yes | |
sign | Yes | |
any | Yes | |
all | Yes | |
min | Yes | |
max | Yes | |
double | ||
int32 | Yes | |
uint32 | Yes | |
erf | ||
erfc | ||
repmat | ||
reshape | Expanded empty dimension is not supported | |
dot | ||
cross | ||
diff |
Initial Equations
The (Initial=true) attribute lets you specify equations that
are executed during model initialization only:
equations (Initial=true)
Expression1 == Expression2;
endThe default value of the Initial attribute for equations is
false, therefore you can omit this attribute when declaring
regular equations.
For more information on when and how to specify initial equations, see Initial Equations.