equations

Задайте уравнения компонента

Синтаксис

equations
   Expression1 == 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 не может быть сформирован со следующими операторами:

  • 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

Для того же компонента задайте следующее кусочное уравнение:

y={xдля 1<= x<=1x2иначе 

Это уравнение, написанное на языке 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
Введенный в R2009a