在matlab中我想创建符号向量:
X = sym(['x_n' 'x_(n-1)' 'x(n-2)'])
然而,我得到了
??? Error using ==> sym.sym>expression2ref at 2408
Error: Unexpected 'identifier' [line 1, col 11]
Error in ==> sym.sym>char2ref at 2378
s = expression2ref(x);
Error in ==> sym.sym>tomupad at 2147
S = char2ref(x);
Error in ==> sym.sym>sym.sym at 102
S.s = tomupad(x,'');
如果我尝试创建,例如只是X = sym(['x_n' 'x_(n-1)'])
,没关系,那有什么不对?
答案 0 :(得分:0)
如果你想创建一个符号向量(或矩阵),你只需要在方括号周围加一组引号:
X = sym('[x_(n) x_(n-1) x_(n-2)]')
或者
X = sym('[x_(n);x_(n-1);x_(n-2)]')
我假设您在向量的第一个和第三个元素中存在拼写错误,并且希望将x_
定义为n
的函数(如果没有,请参见下文)。但是,这通常不是构建符号数组的最灵活方式。我使用syms
函数代替sym
并避免构建字符串(尽管有时使用字符串系统地创建大型矢量/矩阵方程式可能更容易):
syms x_(n)
X = [x_(n) x_(n-1) x_(n-2)]
最后,正如sym
的帮助所示,人们也可以自动创建枚举变量的向量和矩阵,例如:
X = sym('x_',[1 3])
如果您实际上不想指定函数向量,则此选项非常方便。