exponenta event banner

уравнения

Определение уравнений компонентов

Синтаксис

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

Предложение expression определяет область подстановки. Начинается с ключевого слова inи может содержать одно или несколько выражений уравнений. Все выражения, назначенные идентификаторам в объявлении, подставляются в уравнения в выражении во время синтаксического анализа.

Примечание

end ключевое слово требуется в конце let-in-end заявление.

К разделу уравнений применяются следующие правила:

  • EquationList является одним или несколькими объектами класса EquationExpression, разделенные запятой, точкой с запятой или новой строкой.

  • EquationExpression может быть одним из:

    • Expression

    • Условное выражение (if-elseif-else заявление)

    • Пусть выражение (let-in-end заявление)

  • Expression является допустимым выражением MATLAB. Он может быть сформирован со следующими операторами:

  • В разделе уравнений Expression не может формироваться со следующими операторами:

  • 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

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

y = xfor  1 < = x < =  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
Представлен в R2009a