0

我正在寻找一个可以执行的命令:

a*b*c -----> +

-a --------> -

a*b -------> +

c*d*e*f*a--> +

其中 a、b、c、d、e 和 f 是 Matlab 中的符号变量。

是否有任何命令可以返回表达式的初始符号?

4

1 回答 1

2

如果你有 Matlab 2013,你可以这样做:

>> syms a b c       
>> children(a*b*c)

ans =

[ a, b, c]

>> children(-a)   

ans =

[ a, -1]

>> children(a*b)

ans =

[ a, b]

>> children(-a*-b)

ans =

[ a, b]

>> children(-a*-b*-c)

ans =

[ a, b, c, -1]

您将通过查看返回向量的最后一个元素来获得初始符号。所以测试一下。

如果将变量定义为一个值,结果将如下所示:

>> c = -4;
>> children(-a*-b*-c)

ans =

[ a, b, 4]

最后一个元素上的呼号如果为负则为 -1,为正则为 1。

请注意,可能并不总是有一个数值作为最后一个元素!Sign(a) 将给出 sign(a) 所以你需要假设它在这种情况下是积极的。

于 2013-03-23T11:15:11.907 回答