[matlab]符号表达式中的系数提取问题

今天遇到一个问题:

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),这是很麻烦的。

你可能感兴趣的:([matlab]符号表达式中的系数提取问题)