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

时间:2016-02-05 04:12:43

标签: matlab matlab-figure symbolic-math

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

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

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

两种情况都没有显示结果。

2 个答案:

答案 0 :(得分:3)

尝试

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

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

答案 1 :(得分:0)

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

  

将来的版本中将删除对无效变量名称且未定义数字的字符串的支持。要创建符号表达式,首先要创建符号变量,然后对它们使用操作。

其次,使用该表达式中包含的变量(例如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)

然后使用vpadoubleyout转换为变量精度或浮点形式。