【问题标题】:MATLAB: sym function does not worksMATLAB:sym 函数不起作用
【发布时间】:2012-09-28 23:18:59
【问题描述】:

在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)']),没事,怎么了?

【问题讨论】:

  • X = sym(['x_n' 'x_(n-1)']) 工作的事实并不意味着你创建了一个向量......你创建了一个很长的符号变量 X = x_nx_(n - 1)
  • @natan 您能否通过说明如何创建矢量并将其作为答案发布来扩展您的评论?

标签: matlab


【解决方案1】:

如果你想创建一个符号向量(或矩阵),你只需要在方括号周围加上一组引号:

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

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

【讨论】:

    猜你喜欢
    • 2018-11-14
    • 2021-12-17
    • 2011-05-04
    • 2013-09-08
    • 2018-06-05
    • 2013-09-26
    • 2011-09-04
    • 2014-08-05
    • 2021-06-02
    相关资源
    最近更新 更多