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。