simscape.Value и simscape.Unit ОбъектыВ физическом моделировании параметры блоков, переменные и физические сигналы представлены как значение со связанным модулем. Директор производства Simscape™ автоматически выполняет необходимые модульные операции преобразования при решении физической сети. simscape.Value и simscape.Unit объекты по существу реализуют MATLAB® интерфейс, который реплицирует функциональность директора производства за пределами Simscape:
simscape.Value связывает массивы арифметических значений к модулям и распространяет те модули посредством математических операций. У всех членов массива должен быть тот же модуль.
simscape.Unit представляет единицы измерения без присваиваемого значения, и поэтому позволяет вам записать функции MATLAB, которые эмулируют модульное поведение распространения.
Используйте simscape.Value и simscape.Unit к:
Предварительно обработайте или постобработайте данные моделирования с модулями в MATLAB, например, вычислите общую жидкую массу или постройте динамику аппарата.
Создайте стоимость с модульными объектами в MATLAB и управляйте ими во время программируемой типовой конструкции.
Запишите функции MATLAB, которые работают со значениями с модулями.
Например, эта функция вычисляет мудрое страницей умножение матриц при распространении модулей:
function out = mypagemtimes(a, b) out = simscape.Value(pagemtimes(value(a),value(b)),unit(a)*unit(b)); end
Функция:
Берет два simscape.Value объекты, a и b, в качестве аргументов.
Значения извлечений от a и b.
Использует MATLAB pagemtimes функция на этих извлеченных значениях.
Использует simscape.Unit объекты вычислить производную единицу.
Повторно прикрепляет новый модуль к вычисленному массиву значений и возвращает получившийся simscape.Value объект.
simscape.Value МассивыМожно использовать базовые функции массива MATLAB при работе с simscape.Value массивы. Таблицы приводят дополнительные ограничения, которые принадлежат использованию simscape.Value аргументы.
simscape.Value Математические функции
| Имя | Описание |
|---|---|
abs | Абсолютное значение |
acos | Обратный косинус |
asin | Обратный синус |
atan | Обратный тангенс |
atan2 | Обратный тангенс с четырьмя квадрантами |
cos | Косинус |
cosh | Гиперболический косинус |
cross | Векторное произведение |
diff | Различие |
dot | Скалярное произведение |
exp | Экспоненциал |
log | Натуральный логарифм |
log10 | Распространенный (базируются 10), логарифм |
max | Максимальные элементы массива |
min | Минимальные элементы массива |
mod | Модуль после деления |
prod | Продукт элементов |
sign | Сигнум-функция |
sin | Синус |
sinh | Гиперболический синус |
sqrt | Квадратный корень |
sum | Сумма элементов |
tan | Тангенс |
tanh | Гиперболический тангенс |
simscape.Value Операции
simscape.Value Контроль
| Имя | Описание |
|---|---|
isequal | Сравнивает два simscape.Value объекты. Возвращает 1 если оба массива одного размера, содержат те же значения и имеют тот же модуль и 0 в противном случае. |
isequaln | Сравнивает два simscape.Value объекты, обрабатывая элементы NaN как равные друг другу. Возвращает true, если оба массива одного размера, содержат те же значения и имеют тот же модуль и 0 в противном случае. |
isfinite | Возвращает 1 для конечных элементов массива и 0 в противном случае. |
isinf | Возвращает 1 для бесконечных элементов массива и 0 в противном случае. |
isnan | Возвращает 1 для элементов массива NaN и 0 в противном случае. |
simscape.Value Преобразования типов
| Имя | Описание |
|---|---|
double | Для безразмерного аргумента только, преобразует элементы массива в двойную точность. Безразмерные величины неявно преобразованы в безразмерный перед преобразованием, чтобы удвоиться. Например: double(simscape.Value(1,'m')/simscape.Value(2,'cm')) ans =
50 |
logical | Преобразует числовые значения в logicals. Поддерживаемый для |
simscape.Unit МассивыОсновное умножение, деление, степень и реляционные операции заданы на simscape.Unit. Таблица приводит дополнительные ограничения, которые принадлежат использованию simscape.Unit аргументы.
simscape.Unit Арифметические и реляционные операции
| Имя | Описание |
|---|---|
times | Поэлементные модульные продукты |
mtimes | Матричные модульные продукты |
rdivide, ldivide | Поэлементные модульные частные |
mrdivide, mldivide | Матричные модульные частные. Поддерживаемый, но знаменатель должен быть скалярный simscape.Unit объект. |
power | Поэлементная степень. Основой должен быть simscape.Unit объект. Экспонента должна быть совместимо размерным числовым массивом. См. также Дробные и Рациональные Экспоненты. |
mpower | Матричная степень. Поддерживаемый, но требует, чтобы основа и экспонента были скаляром. |
eq, ne | Определите равенство или неравенство. Сравнивает модули в канонической форме. |
isequal | Определите равенство массивов. Верный, если модульные массивы одного размера и все модули эквивалентны. |
simscape.Unit Преобразования типов
Например, создайте 2x3 модульный массив:
u1 = simscape.Unit(["kg", "g", "lb"; "km", "m", "mm"])
u1 =
2×3 unit array
kg g lb
km m mmПреобразуйте модульный массив в массив строк:
string(u1)
ans =
2×3 string array
"kg" "g" "lb"
"km" "m" "mm"Преобразуйте тот же модульный массив в массив ячеек из символьных векторов:
cellstr(u1)
ans =
2×3 cell array
{'kg'} {'g'} {'lb'}
{'km'} {'m'} {'mm'}Преобразуйте тот же модульный массив в символьный массив:
char(u1)
ans =
6×2 char array
'kg'
'km'
'g '
'm '
'lb'
'mm'Когда математическая операция, такая как сложение, требует вычислительного модуля, модуль возврата является модулем операнда, коэффициент преобразования которого к основной единице является самым большим. Например:
simscape.Value(2.2,'cm') + simscape.Value(2,'mm')
ans =
2.4000 : cmОсновной единицей для длины является m. Коэффициент преобразования cm в m больше, чем тот из mm в m, поэтому, модуль возврата при добавлении cm и mm cm.
Умножение и операции деления не требуют вычислительного модуля. Эти операции выполняются путем умножения (деление) значений и умножение (деления) модулей. Например:
simscape.Value(2.2,'N') * simscape.Value(2,'m')
ans =
4.4000 : N*mДробные показатели поддерживаются для simscape.Value объекты. Числовое значение повышено до double питание, заданное функцией и рациональным приближением дробного показателя, подано к модулям.
Для simscape.Unit объекты, экспоненты должны быть рациональными числами. Когда вычислительные модульные степени, simscape.Unit использует то же рациональное дробное приближение в качестве MATLAB rat функция.
simscape.Value объекты могут иметь аффинные модули. Для получения дополнительной информации займитесь Аффинными Модулями.
Следующие операции запрещаются на значениях с аффинным модулем:
Формирование составных модулей, которые включают аффинные модули.
Основные операции над массивами, которые требуют модульного преобразования.
Неявное или явное сравнение с 0.
Прямая параметризация блока не поддерживается, то есть, вы не можете использовать simscape.Value или simscape.Unit объекты непосредственно, чтобы задать параметры блоков. Можно использовать эти объекты только во время программируемой типовой конструкции.
Например, чтобы программно установить параметры блоков на основе simscape.Value объект:
x = simscape.Value(V, U); set_param(block, 'x', mat2str(value(x))); set_param(block, 'x_unit', char(unit(x)));
Вы не можете использовать simscape.Value или simscape.Unit объекты задать значения с модулями или выполнить модульные расчеты в Symbolic Math Toolbox™.
MATLAB Coder™ не поддерживает simscape.Value и simscape.Unit объекты.