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.
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;
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);
При генерации кода 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;
По умолчанию Simscape хранит все числовые значения как значения с плавающей точкой с двойной точностью. В соответствии с этим типом данных по умолчанию, generate::Simscape
преобразует элементы выражений, уравнений и матриц к двойному формату:
print(Unquoted, generate::Simscape(x^2 + y/3 + 1/6))
y/3.0+x^2+1.0/6.0;
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 ];
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;
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
Чтобы создать текстовый файл с отформатированной строкой Simscape, представляющей символьное выражение, используйте fprint
команда:
e := x'(t) + 2*x + 5 = 0: fprint(Unquoted, Text, "eqn.txt", generate::Simscape(e))
Если файл eqn.txt
уже существует, fprint
заменяет существующий код Simscape на конвертированное символьное выражение. Можно открыть и отредактировать получившийся текстовый файл.
|
Выражение, уравнение, список уравнений или матрица |
|
Отключить предупреждения. |
generate::Simscape
возвращает string
содержа код Simscape. В случае недопустимого преобразования возвращенное значение является произвольной строкой.