代码之家  ›  专栏  ›  技术社区  ›  Andres Camacho

如何求解保存在字符串中的表达式?

  •  1
  • Andres Camacho  · 技术社区  · 10 年前

    我想求解保存在字符串中的表达式。我尝试了以下方法:

    x=sym('cos(x)');
    plot(x)
    

    x=sym('cos(30)');
    simplify(x);
    

    两种情况均未显示结果。

    2 回复  |  直到 10 年前
        1
  •  4
  •   atomSmasher    10 年前

    尝试

    x = sym('cos(x)');
    ezplot(x);
    

    x = sym('cos(30)');
    eval(x);
    
        2
  •  1
  •   horchler    10 年前

    首先,除非您使用的是10年前的Matlab版本,否则不推荐将符号表达式作为字符串进行求值。根据当前(R2015b)文件 sym :

    在未来的版本中,将删除对无效变量名且未定义数字的字符串的支持。要创建符号表达式,请先创建符号变量,然后对其进行操作。

    第二,使用表达式中包含的变量定义表达式,例如。, x=sym('cos(x)'); ,令人困惑,可能导致问题。

    相反,您应该使用类似的方法来创建一个符号表达式:

    syms x
    y = cos(x);
    ezplot(y);
    

    或者创建一个符号函数, symfun :

    syms x
    y(x) = cos(x);
    ezplot(y);     % Or: plot(-6:0.1:6,y(-6:0.1:6))
    

    要评估您的表达式:

    syms x
    y = cos(x);
    yout = subs(y,x,30) % Note that trigonometric functions take inputs in radians, not degrees
    

    或者:

    syms x
    y(x) = cos(x);
    yout = y(30)
    

    然后使用 vpa double 转换 yout 可变精度或浮点形式。