subexpr

Перепишите символьное выражение в терминах общих подвыражений

Описание

пример

[r,sigma] = subexpr(expr) переписывает символьное выражение expr в терминах общего подвыражения, заменяя этим общим подвыражением с символьной переменной sigma. Входное выражение expr не может содержать переменную sigma.

пример

[r,var] = subexpr(expr,'var') заменяет общим подвыражением var. Входное выражение expr не может содержать символьную переменную var.

пример

[r,var] = subexpr(expr,var) эквивалентно [r,var] = subexpr(expr,'var'), за исключением того, что символьная переменная var должен уже существовать в рабочей области MATLAB®.

Этот синтаксис перезаписывает значение переменной var с общим подвыражением, найденным в expr. Постараться не перезаписывать значение var, используйте другое имя переменной в качестве второго выходного аргумента. Например, используйте [r,var1] = subexpr(expr,var).

Примеры

свернуть все

Решите следующее уравнение. Решения являются очень длинными выражениями. Чтобы отобразить решения, удалите точку с запятой в конце solve команда.

syms a b c d x
solutions = solve(a*x^3 + b*x^2 + c*x + d == 0, x, 'MaxDegree', 3);

Эти долгие выражения имеют общие подвыражения. Чтобы сократить выражения, сократите общее подвыражение при помощи subexpr. Если вы не задаете переменную, чтобы использовать в сокращениях как второй входной параметр subexpr, затем subexpr использует переменную sigma.

[r, sigma] = subexpr(solutions)
r = 

(σ-b3a-σ2σσ22σ-b3a-σ2-σ1σ22σ-b3a-σ2+σ1)где  σ1=3σ+σ2σi2  σ2=c3a-b29a2

sigma = 

d2a+b327a3-bc6a22+c3a-b29a23-b327a3-d2a+bc6a21/3

Решите квадратное уравнение.

syms a b c x
solutions = solve(a*x^2 + b*x + c == 0, x)
solutions = 

(-b+b2-4ac2a-b-b2-4ac2a)

Используйте syms создать символьную переменную s, и затем замените общие подвыражения в результате с этой переменной.

syms s
[abbrSolutions,s] = subexpr(solutions,s)
abbrSolutions = 

(-b+s2a-b-s2a)

s = b2-4ac

В качестве альтернативы используйте 's' задавать переменную сокращения.

[abbrSolutions,s] = subexpr(solutions,'s')
abbrSolutions = 

(-b+s2a-b-s2a)

s = b2-4ac

Оба синтаксиса перезаписывают значение переменной s с общим подвыражением. Поэтому вы не можете, например, заменить s с некоторым значением.

subs(abbrSolutions,s,0)
ans = 

(-b+s2a-b-s2a)

Постараться не перезаписывать значение переменной s, используйте другое имя переменной во втором выходном аргументе.

syms s
[abbrSolutions,t] = subexpr(solutions,'s')
abbrSolutions = 

(-b+s2a-b-s2a)

t = b2-4ac
subs(abbrSolutions,s,0)
ans = 

(-b2a-b2a)

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

свернуть все

Долгое выражение, содержащее общие подвыражения, заданные как символьное выражение или функция.

Переменная, чтобы использовать в замене общими подвыражениями, заданными как вектор символов или символьная переменная.

subexpr выдает ошибку если входное выражение expr уже содержит var.

Выходные аргументы

свернуть все

Выражение с общими подвыражениями, замененными сокращениями, возвращенными как символьное выражение или функция.

Переменная используется в сокращениях, возвращенных как символьная переменная.

Представлено до R2006a