checkUnits

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

Синтаксис

C = checkUnits(expr)
C = checkUnits(expr,'Compatible')
C = checkUnits(expr,'Consistent')

Описание

пример

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

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

пример

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

пример

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

Примеры

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

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

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

A мс=B kgs

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

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