我想对由此构造的符号变量求和,
x = transpose(sym('x',[1 5]))
我以为我可以通过x1
打电话给x(1)
。因此,我做了以下,
syms p
symsum(p^(i)*x(i),i,1,5)
不幸的是我收到了以下错误
数组索引必须是正整数或逻辑值。
有没有办法解决这个错误?
根据symsum
的文档,范围的变量(在你的情况下i
应该是一个符号变量)。您尚未将i
定义为符号变量,因此它被认为是imaginary unit(这是它的默认内置定义)。避免使用i
和j
作为变量总是明智的,因为这些是用于MATLAB中的虚构单元。
然而,修复此问题并不能解决所有问题。显然,symsum
的函数定义中不允许索引符号变量。要做你想做的操作,我会像这样使用sum
:
x = sym('x', [1 5]);
syms p;
sum(p.^(1:5) .* x)
这使:
ans =
x5*p^5 + x4*p^4 + x3*p^3 + x2*p^2 + x1*p