Quantcast

Documentation Center

  • Trial Software
  • Product Updates

equations

Define component equations

Syntax

equations
Expression1 == Expression2;
end

Description

equations begins the equation section in a component file; this section is terminated by an end keyword. It is executed throughout the simulation. The purpose of the equation section is to establish the mathematical relationships among a component's 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 equation section.

The following syntax defines a simple equation.

equations
Expression1 == Expression2;
end

The statement Expression1 == Expression2 is an equation statement. It specifies continuous mathematical equality between two objects of class Expression. An Expression is any valid MATLAB® expression that does not use any of the relational operators: ==, <, >, <=, >=, ~=, &&, ||. Expression may be constructed from any of the identifiers defined in the model declaration.

The equation section may contain multiple equation statements. You can also specify conditional equations by using if statements as follows:

equations
if Expression
ExpressionList
{ elseif Expression
ExpressionList }
else
ExpressionList
end
end

    Note   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 define intermediate terms and use them in equations by using let statements as follows:

equations
let
declaration clause
in
expression clause
end
end

The 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 equation section:

  • EquationList is one or more objects of class EquationExpression, separated by a comma, semicolon, or newline.

  • EquationExpression can be one of:

    • Expression

    • Conditional expression (if-elseif-else statement)

    • Let expression (let-in-end statement)

  • Expression is any valid MATLAB expression. It may be formed with the following operators:

  • In the equation section, Expression may not be formed with the following operators:

  • The colon operator may take only constants or end as its operands.

  • All members of the component are accessible in the equation section, but none are writable.

The following MATLAB functions can be used in the equation section. The table contains additional restrictions that pertain only to the equation 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.

Supported Functions

NameRestrictionsDiscontinuous
plus  
uplus  
minus  
uminus  
mtimes  
times  
mpower  
power  
mldivideNonmatrix denominator 
mrdivideNonmatrix denominator 
ldivide  
rdivide  
eqDo not use with continuous variables 
neDo not use with continuous variables 
lt  
gt  
le  
ge  
and Yes
or Yes
sin  
cos  
tan  
asin  
acos  
atan  
atan2  
log  
log10  
sinh  
cosh  
tanh  
exp  
sqrtFor negative numbers, calculated as . For example, sqrt(–1) = –1. 
abs Yes
logical Yes
sign Yes
floorScalar argumentYes
ceilScalar argumentYes
fixScalar argumentYes
roundScalar argumentYes

Examples

For a component where x and y are declared as 1x1 variables, specify an equation of the form y = x2:

equations
  y == x^2;
end

For the same component, specify the following piecewise equation:

This equation, written in the Simscape™ language, would look like:

equations
  if x >= -1 && x <= 1
    y == x;
  else
    y == x^2;
  end
end
Was this topic helpful?