考虑脚本
syms a b;
f = a.*b;
a = [1 2];
b = [0 2];
subs(f)
这会产生一个向量作为输出([0,4]),但是在给定应该执行的逐元素乘法的情况下,预期输出是标量(4)。
如何在替换符号函数时正确使用向量?
答案 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
的印刷版中看到的那样,符号引擎会将f
和a
视为标量。
为了做你可能想做的事,你需要将你的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