今天遇到一个问题:
expr = x*y*z
如何将y*z作为一个整体,然后求出其的系数x
首先映入眼帘的是matlab中的coeffs函数
但是使用
coeffs(expr,y*z);
结果 Error了,貌似是不能输入表达式做为第二个参数
然后我就想能不能将 y*z这个表达式替换成一个变量比如n
就使用subs
subs(expr,y*z,n);
结果倒是没出错,但是返回的是 x*y*z,
继续测试
subs(expr,y,n);
以及
subs(expr,x*y*z,n);
返回结果都是对的,唉
目前以我的水平,要做也可以,有两种办法
1.将expr转换为str,然后提取各项,匹配
2.具体分析这个问题,取巧
http://zhidao.baidu.com/question/246232648.html
这个知道答案太针对问题了,没有普适性。
3.利用表达式除法
今天想到一个方法,连用两个coeff!
今天在实现的过程中发现不好用,因为比如要要提取expr = x^5*y+x*5 的系数,先用一次[c,t]=coeffs(expr,x)这时可以得到的c是有两个个元素,还需要判断哪一个是x^5*y那一项,赋给expr,然后再使用coeffs(expr,y),这是很麻烦的。