2

在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,'');

如果我尝试创建,例如 just X = sym(['x_n' 'x_(n-1)']),没关系,那么有什么问题?

4

1 回答 1

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])

如果您实际上不想指定函数向量,则此选项非常方便。

于 2013-05-21T21:40:32.337 回答