Проверяйте совместимые размерности и допустимые модули
C = checkUnits(
проверяет expr
)expr
для совместимых размерностей и допустимых модулей измерения и возвращает структуру, содержащую поля Consistent
и Compatible
. Поля содержат логические 0
(false
) или логический 1
(true
) в зависимости от результатов проверки.
expr
имеет совместимые размерности, если все условия имеют одинаковые размерности, такие как длина или время. expr
имеет последовательные модули, могут ли все модули одной и той же размерности быть преобразованы друг в друга с коэффициентом преобразования 1.
Проверяйте размерности уравнения или выражения. Размерности проверяются, чтобы подтвердить, что уравнение или выражение верно.
Проверьте размерности уравнения
при помощи 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]
findUnits
| isUnit
| newUnit
| separateUnits
| str2symunit
| symunit
| symunit2str
| unitConversionFactor