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

How to solve a expression saved in a string?

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

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

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

两种情况均未显示结果。

尝试

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

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

首先,除非您使用的是 10 年前的 Matlab 版本,否则不建议将符号表达式作为字符串求值。来自 sym 的当前 (R2015b) 文档:

Support of strings that are not valid variable names and do not define a number will be removed in a future release. To create symbolic expressions, first create symbolic variables, and then use operations on them.

其次,使用表达式中包含的变量来定义表达式,例如 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, or doubleyout转换为可变精度或浮点形式。