用向量替换符号变量

时间:2017-04-22 19:35:09

标签: matlab vector substitution symbolic-math mupad

考虑脚本

syms a b;
f = a.*b;
a = [1 2];
b = [0 2];
subs(f)

这会产生一个向量作为输出([0,4]),但是在给定应该执行的逐元素乘法的情况下,预期输出是标量(4)。

如何在替换符号函数时正确使用向量?

1 个答案:

答案 0 :(得分:1)

我相信你犯了两个错误。首先,您要用双数组覆盖符号变量,因此您实际上并没有为符号对象调用@Value("${default.to.address}") private String address;

subs

第二个是防止这种情况仍然会给出错误的答案:

>> syms a;   
>> class(a)

ans =

sym

>> a = [1 2];
>> class(a)

ans =

double

这是因为,正如您在>> syms a b; >> f = a.*b f = a*b >> subs(f,{a,b},{[1, 2], [0,2]}) ans = 0 4 的印刷版中看到的那样,符号引擎会将fa视为标量。

为了做你可能想做的事,你需要将你的syms定义为2元素数组:

b

但是无论如何,正如你所看到的,结果仍然是一个数组,因为> a = sym('a',[1 2]) a = [ a1, a2] >> b = sym('b',[1 2]) b = [ b1, b2] >> f = a.*b f = [ a1*b1, a2*b2] >> subs(f,[a,b],[[1,2],[0,2]]) ans = 0 4 (或符号.*)是元素乘法。要获得标量产品,请使用*

sym/dot