generate::Simscape

Сгенерируйте уравнение Simscape

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.

Синтаксис

generate::Simscape(e, <NoWarning>)

Описание

generate::Simscape(e) генерирует код Simscape™ для выражения MuPAD® e.

Программное обеспечение Simscape расширяет линейку продуктов Simulink® с инструментами для моделирования и симуляции многодоменных физических систем, таких как те с механическим устройством, гидравлическими, пневматическими, тепловыми, и электрическими компонентами. В отличие от других блоков Simulink, которые представляют математические операции или работают с сигналами, блоки Simscape представляют физические компоненты или отношения непосредственно. С блоками Simscape вы создаете модель системы так же, как вы собрали бы физическую систему. Для получения дополнительной информации о программном обеспечении Simscape, смотрите Simscape.

Можно расширить среду моделирования Simscape путем создания собственных компонентов. Когда вы зададите компонент, используйте раздел уравнения файла компонента, чтобы установить математические отношения среди переменных компонента, параметров, входных параметров, выходных параметров, время и производные времени каждой из этих сущностей. Программное обеспечение MuPAD и Simscape позволило вам выполнить символьные расчеты и использовать результаты этих расчетов в разделе уравнения. generate::Simscape функция переводит результаты символьных расчетов к уравнениям языка Simscape.

generate::Simscape возвращает отформатированную строку Simscape, представляющую выражение, уравнение, список выражений или уравнений или матрицы.

generate::Simscape преобразует идентификатор t к переменной time в получившемся коде Simscape. Однако имя t из вызова функции не изменяется во время преобразования. Смотрите Пример 1 и Пример 2.

generate::Simscape преобразует любую производную относительно переменной t к обозначению Simscape x.der, где x зависящая от времени переменная. Смотрите Пример 3.

generate::Simscape принимает, что типом конвертированных данных является double. Смотрите пример 4.

При генерации кода Simscape для матрицы генератор производит плотную матрицу. Смотрите Пример 5.

Используйте generate::optimize функция, чтобы оптимизировать код MuPAD прежде, чем преобразовать его в синтаксис Simscape. Смотрите Пример 6.

generate::Simscape преобразует кусочные выражения в код Simscape при помощи if операторы. Смотрите Пример 7.

Раздел уравнения файла компонента Simscape поддерживает ограниченное количество функций. Для получения дополнительной информации и список поддерживаемых функций, смотрите Simscape equations. Если символьное уравнение содержит функции, которые не доступны в разделе уравнения файла компонента Simscape, generate::Simscape не может правильно преобразовать эти уравнения в уравнения Simscape. Такие выражения не инициировали ошибку. Следующие типы выражений подвержены недопустимому преобразованию:

  • Выражения с бесконечностями

  • Выражения, которые содержат структуры программирования, такие как циклы, coditional операторы (за исключением if оператор), и map вызовы функции

  • Выражения, которые содержат интервалы, наборы и списки

Чтобы отобразить сгенерированный код Simscape по экрану, используйте print функция. Чтобы удалить кавычки и расширить специальные символы как разрывы строки и вкладки, используйте параметр печати Unquoted. Если линия сгенерированного кода более длинна, чем TEXTWIDTH установка, print функционируйте пропуски что линия в несколько более коротких линий. Вставленный символ продолжения линии (\) не допустимо в Simscape. Чтобы постараться не вставлять символы продолжения линии, увеличьте TEXTWIDTH установка или использование fprint функционируйте, чтобы записать сгенерированный код в файл.

Чтобы записать сгенерированный код Simscape в файл, используйте fprint функция с Unquoted опция. Смотрите Пример 8.

NoWarning опция позволяет вам отключить предупреждения. Смотрите Пример 2.

Примеры

Пример 1

generate::Simscape функционируйте заменяет все экземпляры идентификатора MuPAD t с переменной time. Например, преобразуйте следующее уравнение в уравнение Simscape:

e := A*sin(w*t) + B*cos(w*t) = 0:
print(Unquoted, generate::Simscape(e))
  B*cos(time*w)+A*sin(time*w) == 0.0;

Пример 2

generate::Simscape функция не изменяет название функции t в вызовах функции:

print(Unquoted, generate::Simscape([t(), t(0), t(x)]))
Warning: Function 't' not verified to be a valid Simscape function.
  t();
  t(0.0);
  t(x);

Этот пример производит несколько идентичных предупреждений. Если вы начали использовать generate::Simscape недавно, предупреждения могут помочь вам идентифицировать потенциальные проблемы в конвертированном коде. Если вы хотите отключить предупреждения, используйте NoWarning опция:

print(Unquoted, generate::Simscape([t(), t(0), t(x)], NoWarning))
  t();
  t(0.0);
  t(x);

Пример 3

При генерации кода Simscape, generate::Simscape функция преобразует производные относительно переменной t к обозначению Simscape x.der. Здесь x зависящая от времени переменная. Например, сгенерируйте код Simscape для уравнения e это имеет две зависящих от времени переменные:

e := x'(t) + diff(y(t), t) + 2*x + 5 = 0:
print(Unquoted, generate::Simscape(e))
  x*2.0+x.der+y.der+5.0 == 0.0;

Пример 4

По умолчанию Simscape хранит все числовые значения как значения с плавающей точкой с двойной точностью. В соответствии с этим типом данных по умолчанию, generate::Simscape преобразует элементы выражений, уравнений и матриц к двойному формату:

print(Unquoted, generate::Simscape(x^2 + y/3 + 1/6))
  y/3.0+x^2+1.0/6.0;

Пример 5

generate::Simscape может сгенерировать код Simscape для матрицы MuPAD. В отличие от generate::MATLAB (который производит разреженные матрицы), генератор кода Simscape производит плотные матрицы:

A:= matrix([[1, 0, 0],[0, 0, 1]]):
print(Unquoted, generate::Simscape(A))
  [
  1.0 0.0 0.0
  0.0 0.0 1.0
  ];

Пример 6

generate::Simscape функция не оптимизирует ваш код:

print(Unquoted,
      generate::Simscape([x = a + b, y = (a + b)^2])):
  x == a+b;
  y == (a+b)^2;

Можно использовать generate::optimize функция прежде, чем преобразовать ваш код MuPAD в синтаксис Simscape. Например, эта функция может сократить количество операций путем нахождения общих подвыражений:

print(Unquoted,
      generate::Simscape(
          generate::optimize([x = a + b, y = (a + b)^2])
      )):
  x == a+b;
  y == x^2;

Пример 7

generate::Simscape функция также принимает кусочные выражения. Функция использует if операторы при генерации кода Simscape для кусочных выражений. Например, преобразование Фурье следующего выражения является кусочно-линейной функцией:

FT := fourier(exp(-abs(x)*abs(t))*sin(t)/t, t, s)

generate::Simscape преобразует этот результат в допустимое выражение Simscape:

print(Unquoted, generate::Simscape(FT))
  if (x ~= 0.0)
    -atan((s-1.0)/abs(x))+atan((s+1.0)/abs(x));
  else
    NaN;
  end

Пример 8

Чтобы создать текстовый файл с отформатированной строкой Simscape, представляющей символьное выражение, используйте fprint команда:

e := x'(t) + 2*x + 5 = 0:
fprint(Unquoted, Text, "eqn.txt", generate::Simscape(e))

Если файл eqn.txt уже существует, fprint заменяет существующий код Simscape на конвертированное символьное выражение. Можно открыть и отредактировать получившийся текстовый файл.

Параметры

e

Выражение, уравнение, список уравнений или матрица

Опции

NoWarning

Отключить предупреждения.

Возвращаемые значения

generate::Simscape возвращает string содержа код Simscape. В случае недопустимого преобразования возвращенное значение является произвольной строкой.

Смотрите также

Функции MuPAD