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
объекты.