如何将字符串转换为符号表达式不对称()?

128(30天)
因为信谊()输出一个警告,它不赞成使用自R2016a follo:输入一个字符串
> >符号x
> >符号(“x + 1”)
警告:支持万博1manbetx字符串不有效的变量名或定义一个数量将在未来的版本中被删除。创建符号表情,
第一个创建符号变量,然后使用操作。
在信谊> > convertExpression(第1536行)
信谊> convertChar(第1441行)
信谊> tomupad(第1198行)
信谊(第177行)
有一种不同的方式将一个字符串转换为一个象征性的表达吗?

接受的答案

沃尔特·罗伯森
沃尔特·罗伯森 2016年11月15日
y = evalin (symengine,“x + 1”)
这是一样的吗
y =符号(“x + 1”)
除了通过符号()有更多的开销,这种情况下,会给你警告。
注意:当您使用
信谊x
信谊(“x + 1”)
然后 x 的第二个版本不一定指的是同样的事情,第一个是指。例如,如果你使用了
信谊x y
x = y + 2
信谊(“x + 1”)
那么你将 得到y + 3
2的评论
克里斯托弗Creutzig
克里斯托弗Creutzig 2016年11月22日
作为额外的警告,这将不使用MATLAB语法(或纯MuPAD语法)和不会使用一些变量名称,包括 D , E , , β ,并将一些功能,比如有意想不到的影响 泽塔(a, b) 交换它的参数。

登录置评。

更多的答案(3)

卡兰吉尔
卡兰吉尔 2016年11月17日
编辑:卡兰吉尔 2017年10月17日
你为什么需要将字符串转换为符号表情吗?编辑:R2017b开始,使用 str2sym
> > str2sym (“x + 1”)
ans =
x + 1
卡兰。(象征性的文档)
7评论
沃尔特·罗伯森
沃尔特·罗伯森 2018年9月9日
我原因构造符号函数的原因往往类似于在MuPAD功能:这是说我建设过程涉及到符号表达式。
最近有人用相当于sinc()和计算东西问如何重写它们的显式sinc()代替的罪(π* x) /(π* x)。罪()表达式的位置并不是固定的。我没能得到潜艇()来取代sin()调用
> >潜艇(sin(π* x) + x,“罪”,“罪”)
ans =
x + sin(π* x)
我并没有能够得到函数宏指令(symengine)做一个潜艇()对于这种情况。我可以得到函数宏指令(symengine) subsop()来做一些事情,但是需要知道哪个操作数数字代替。
现在,如果我可以写符号函数绑定参数,可以使用op()和模式匹配和局部变量的名称(正常MATLAB符号变量实际上是全球水平,继承任何假设(),在任何级别)……

登录置评。


约翰D 'Errico
约翰D 'Errico 2016年11月15日
信谊x
y = x + 1;
WTP吗?没有警告。没有问题。
1评论
安德烈亚斯
安德烈亚斯 2016年11月15日
不将一个字符串转换为一个象征性的表达。我知道,可以直接进入符号表达式。

登录置评。


穆罕默德Al-barham
穆罕默德Al-barham 2019年3月11日
你可以通过使用子函数,如下所示(简单的技巧):
例如:f (x) = x + 1;
如果你输入作为字符串> > f = x + 1的
然后使用子来代替值1
潜艇(f, ' x ', 1)
所以,matlab函数将处理泵的任何错误的信息
那么答案将会是:
2