checkUnits

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

Описание

пример

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

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

пример

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

пример

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

Примеры

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

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

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

A ms=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 Newton соответствует 1 кг м/с2 но не с 1 кг см/с2.

Показать, что 1 Ньютон согласуется с 1 кг м/с2 проверяя expr1 но не с 1 кг см/с2 проверяя 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. Redefine 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