主要内容

subexpr

用公共子表达式重写符号表达式

描述

例子

r,sigma] = subexpr(expr重写符号表达式expr对于公共子表达式,用符号变量替换此公共子表达式σ.输入表达式expr不能包含变量σ

例子

rvar] = subexpr(expr,'var”)将公共子表达式替换为var.输入表达式expr不能包含符号变量var

例子

rvar= subexpr(exprvar等于[r,var] = subexpr(expr,'var'),除了符号变量var必须已经存在于MATLAB中®工作区。

此语法将覆盖变量的值var中找到的公共子表达式expr.的值,以避免重写var,使用另一个变量名作为第二个输出参数。例如,使用[r,var1] = subexpr(expr,var)

例子

全部折叠

解下面的方程。解都是很金宝搏官方网站长的表达式。控件末尾的分号可显示解金宝搏官方网站解决命令。

信谊一个bcdx金宝搏官方网站解= solve(a*x^3 + b*x^2 + c*x + d == 0, x,“MaxDegree”3);

这些长表达式有共同的子表达式。若要缩短表达式,请使用subexpr.的第二个输入参数,如果没有指定用于缩写的变量subexpr,然后subexpr使用变量σ

[r, sigma] = subexpr(金宝搏官方网站解)
r =

σ - b 3. 一个 - σ 2 σ σ 2 2 σ - b 3. 一个 - σ 2 - σ 1 σ 2 2 σ - b 3. 一个 - σ 2 + σ 1 在哪里 σ 1 3. σ + σ 2 σ 2 σ 2 c 3. 一个 - b 2 9 一个 2

σ=

d 2 一个 + b 3. 27 一个 3. - b c 6 一个 2 2 + c 3. 一个 - b 2 9 一个 2 3. - b 3. 27 一个 3. - d 2 一个 + b c 6 一个 2 1 / 3.

解一个二次方程。

信谊一个bcx金宝搏官方网站解= solve(a*x^2 + b*x + c == 0, x)
金宝搏官方网站解决方案=

- b + b 2 - 4 一个 c 2 一个 - b - b 2 - 4 一个 c 2 一个

使用信谊来创建符号变量年代,然后用该变量替换结果中的常用子表达式。

信谊年代[abbr金宝搏官方网站Solutions,s] = subexpr(solutions,s)
abbr金宝搏官方网站Solutions =

- b + 年代 2 一个 - b - 年代 2 一个

s =
                       
                        
                         
                          
                           
                            
                             
                              
                               
                                b
                              
                              
                               
                                2
                              
                             
                             
                              -
                             
                              
                               
                                4
                               
                               
                               
                                一个
                               
                               
                               
                                c
                              
                             
                            
                           
                          
                         
                        
                       

另外,使用“年代”指定缩写变量。

[abbr金宝搏官方网站Solutions,s] = subexpr(解决方案,“年代”
abbr金宝搏官方网站Solutions =

- b + 年代 2 一个 - b - 年代 2 一个

s =
                       
                        
                         
                          
                           
                            
                             
                              
                               
                                b
                              
                              
                               
                                2
                              
                             
                             
                              -
                             
                              
                               
                                4
                               
                               
                               
                                一个
                               
                               
                               
                                c
                              
                             
                            
                           
                          
                         
                        
                       

这两种语法都会覆盖变量的值年代使用公共子表达式。因此,你不能,例如,代入年代有一定的价值。

潜艇(abbrSo金宝搏官方网站lutions年代,0)
ans =

- b + 年代 2 一个 - b - 年代 2 一个

避免重写变量的值年代,第二个输出参数使用另一个变量名。

信谊年代[abbr金宝搏官方网站Solutions,t] = subexpr(解决方案,“年代”
abbr金宝搏官方网站Solutions =

- b + 年代 2 一个 - b - 年代 2 一个

t =
                       
                        
                         
                          
                           
                            
                             
                              
                               
                                b
                              
                              
                               
                                2
                              
                             
                             
                              -
                             
                              
                               
                                4
                               
                               
                               
                                一个
                               
                               
                               
                                c
                              
                             
                            
                           
                          
                         
                        
                       
潜艇(abbrSo金宝搏官方网站lutions年代,0)
ans =

- b 2 一个 - b 2 一个

输入参数

全部折叠

包含公共子表达式的长表达式,指定为符号表达式或函数。

用于替换公共子表达式的变量,指定为字符向量或符号变量。

subexpr如果输入表达式,则抛出错误expr已经包含了var

输出参数

全部折叠

用缩写替换公共子表达式的表达式,作为符号表达式或函数返回。

用于缩写的变量,作为符号变量返回。

版本历史

R2006a之前介绍