checkUnits

Проверяйте на совместимые размерности и сопоставимые модули

Описание

пример

C = checkUnits(expr) проверки expr для совместимых размерностей и сопоставимых модулей и возвращает структуру, содержащую поля Consistent и Compatible. Поля содержат логический 0 ложь) или логический 1 TRUE) в зависимости от результатов проверки.

expr имеет совместимые размерности, если все условия имеют те же размерности, такие как длина или время. expr имеет сопоставимые модули, если все единицы той же размерности могут быть преобразованы друг другу с коэффициентом преобразования 1.

пример

C = checkUnits(expr,'Compatible') только проверки expr для совместимых размерностей.

пример

C = checkUnits(expr,'Consistent') только проверки expr для сопоставимых модулей.

Примеры

Проверяйте размерности модулей

Проверяйте размерности уравнения или выражения. Размерности проверяются, чтобы подтвердить, что уравнение или выражение допустимы.

Проверьте размерности уравнения

A ms=B kgs

при помощи checkUnits с опцией 'Compatible'. MATLAB® принимает, что символьные переменные являются безразмерными. checkUnits функция возвращает логический 0 ложь) потому что размерности уравнения не совместимы.

u = symunit;
syms A B
eqn = A*u.m/u.s == B*u.kg/u.s;
checkUnits(eqn,'Compatible')
ans =
  logical
   0

Замените u.kg с u.m при помощи subs и повторите проверку. Поскольку размерности теперь совместимы, checkUnits возвращает логический 1 TRUE).

eqn = subs(eqn,u.kg,u.m);
checkUnits(eqn,'Compatible')
ans =
  logical
   1

Проверяйте непротиворечивость модулей

Проверка модулей для непротиворечивости является более сильной проверкой, чем совместимость. Модули сопоставимы, когда все единицы той же размерности могут быть преобразованы друг другу с коэффициентом преобразования 1. Например, 1 ньютон сопоставим с 1 кг m/s2, но не с 1 кг cm/s2.

Покажите тот 1 Ньютон сопоставим с 1 kg m/s2 путем проверки expr1 но не с 1 kg cm/s2 путем проверки expr2.

u = symunit;
expr1 = 1*u.N + 1*u.kg*u.m/u.s^2;
expr2 = 1*u.N + 1*u.kg*u.cm/u.s^2;
checkUnits(expr1,'Consistent')
ans =
  logical
   1
checkUnits(expr2,'Consistent')
ans =
  logical
   0

Покажите различие между совместимостью и непротиворечивостью путем показа того expr2 имеет совместимые размерности, но не сопоставимые модули.

checkUnits(expr2,'Compatible')
ans =
  logical
   1

Проверяйте несколько уравнений или выражений

Проверяйте несколько уравнений или выражений путем размещения их в массив. checkUnits возвращает массив, элементы которого соответствуют элементам входа.

Проверяйте несколько уравнений на совместимые размерности. checkUnits возвращает [1 0], подразумевать, что первое уравнение имеет совместимые размерности, в то время как второе уравнение не делает.

u = symunit;
syms x y z
eqn1 = x*u.m == y*u.m^2/(z*u.m);
eqn2 = x*u.m + y*u.s == z*u.m;
eqns = [eqn1 eqn2];
compatible = checkUnits(eqns,'Compatible')
compatible =
  1×2 logical array
   1   0

Проверяйте размерности и непротиворечивость модулей

Проверяйте и на совместимые размерности и на сопоставимые модули уравнения или выражения при помощи checkUnits.

Определите уравнения для x-и y-смещения движущегося снаряда. Проверяйте их модули на совместимость и непротиворечивость.

u = symunit;
g = 9.81*u.cm/u.s^2;
v = 10*u.m/u.s^2;
syms theta x(t) y(t)
x(t) = v*cos(theta)*t;
y(t) = v*sin(theta)*t + (-g*t^2)/2;
S = checkUnits([x y])
S = 
  struct with fields:

    Consistent: [1 0]
    Compatible: [1 1]

Второе уравнение имеет совместимые размерности, но противоречивые модули. Это несоответствие состоит в том потому что g неправильно использование cm вместо m. Переопределите g и проверяйте уравнения снова. Второе уравнение теперь имеет сопоставимые модули.

g = 9.81*u.m/u.s^2;
y(t) = v*sin(theta)*t + (-g*t^2)/2;
S = checkUnits([x y])
S = 
  struct with fields:

    Consistent: [1 1]
    Compatible: [1 1]

Входные параметры

свернуть все

Входное выражение в виде символьного выражения, уравнения, функции, вектора, матрицы или многомерного массива.

Введенный в R2017a