Matlab:命令检查前一项是正号还是负号?

Matlab:命令检查前一项是正号还是负号?,matlab,math,symbolic-math,Matlab,Math,Symbolic Math,我正在寻找一个可以执行以下操作的命令: a*b*c -----> + -a --------> - a*b -------> + c*d*e*f*a--> + 其中a、b、c、d、e和f是Matlab中的符号变量 是否有任何命令返回表达式的初始符号?如果您有Matlab 2013,则可以执行以下操作: >> syms a b c >> children(a*b*c) ans = [ a, b, c] >> c

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

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

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

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

c*d*e*f*a--> +
其中a、b、c、d、e和f是Matlab中的符号变量


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

如果您有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(如果为正)

请注意,最后一个元素可能并不总是数值!
符号(a)将给出符号(a),因此您需要假设它在这种情况下是肯定的。

是否在Matlab 2012中有可能?是否有回退解决方案?它在MatlabR2012A/b中工作。如果子项不工作,可以用值替换符号。
subs('a*-b',{a,b},{1,1})
谢谢!接受和+1。