主要内容

str2sym

对表示符号表达式的字符串求值

描述

例子

str2sym(符号)评估符号哪里符号是表示符号表达式的字符串。仅在从文本文件或准确指定数字时才能输入符号表达式作为字符串。否则,请勿使用字符串进行符号输入。

例子

全部崩溃

评估字符串‘sin(pi)’.str2sym返回预期结果。

str2sym(‘sin(pi)’)
ans=0

str2sym假定=运算符表示一个等式,而不是赋值。也,str2sym不将字符串中包含的变量添加到工作区。

通过评估来显示此行为“x^2=4”.这str2sym函数返回方程式x^2==4但是x不会出现在工作区中。

方程n=str2sym('x^2=4')
eqn = x ^ 2 == 4

在中查找变量方程利用赛姆瓦尔. 变量变量现在指x.

var=symvar(等式n)
var=x

从指定值方程通过解决方程对于变量以及分配结果。

varVal=求解(等式,var)
varVal=-2

str2sym不替换从工作空间的工作空间进行输入中的变量。所以,str2sym具有可复制的输出。相反,使用潜艇关于str2sym.

设置Y2..然后,评估“y^2”有无潜艇展示潜艇替补Y有它的价值。

y = 2;没有能福= str2sym('y ^ 2')
不带UBS=y^2
withSubs=subs(str2sym('y^2'))
withsubs = 4.

当符号表达式作为字符串存储在文件中时,通过读取文件并使用str2sym.

假设文件mySym.txt包含此文本。

a = 2.431 y = a * exp(t)diff(z(t),t)= b * y * z

计算中的表达式mySym.txt使用str2sym.

文件名='mysym.txt';filetext = fileread(filename);filetext = splitlines(filetext);str2sym(filetext)
ans = a == 2.431 y == a * exp(t)diff(z(t),t)== b * y * z

产量str2sym与工作区值无关,这意味着输出是可重复的。通过分配价值来显示此重复性B以及重新计算存储的表达式。

b=5;str2sym(文件文本)
ans = a == 2.431 y == a * exp(t)diff(z(t),t)== b * y * z

要使用工作空间值或输入公式中的值,请使用潜艇(首先解决方程解决),如中所述将字符串作为符号表达式求值将工作区值替换为字符串输入.

str2sym当函数位于路径上时执行在输入中的函数。除此以外,str2sym按预期返回符号对象。此行为意味着输出是可复制的。

通过从文件中读取微分方程和初始条件来显示此行为。求解该条件的方程。因为str2sym不评估y(t)在方程中,输出是可再现的。

文件名='mysym.txt'; filetext=fileread(文件名);filetext=拆分行(filetext);eqn=str2sym(文件文本(1))
方程n=diff(y(t),t)==-y(t)
cond = str2sym(filetext(2))
Cond = Y(0)== 2
ysol = dsolve(eqn,cond)
ysol = 2 * exp(-t)

因为MATLAB®Parser会自动将所有数字转换为双精度,通过输入大量和高精度数为字符串来维护原始精度。代替str2sym,输入整数符号使用浮点数vpa因为符号vpa速度更快。

显示直接输入大整数比率与精确字符串表示之间的错误。

num=sym(12230984290/38490293482)
num=5724399718238385/18014398509481984
numexact = sym('12230984290/38490293482')
numExact=6115492145/19245146741
错误=num-numExact
错误=-7827162395/346689742765832461975814144

显示直接输入高精度数字与精确字符串表示之间的错误。

num=vpa(8.023098429038490293482)
num = 8.0230984290384910195825796108693
numExact=vpa('8.023098429038490293482')
numexact = 8.023098429038490293482
错误=num-numExact
误差= 0.00000000000000000726100884458692884451883343504

有关详细信息,请参阅数字到符号的转换. 有关完整的工作流,请参见高精度的数值计算素因子分解.

从R2019b开始,可以使用字符向量表示十六进制和二进制值。十六进制值以0x或者0X前缀,而二进制值以0b或者0B字首。然后,您可以使用向十六进制和二进制值转换为符号十进制数str2sym. 有关详细信息,请参阅十六进制和二进制值.

创建表示十六进制值的字符向量。将该值转换为符号十进制数。

H='0x2A'D=str2sym(H)
D=42

创建表示二进制值的字符向量。将值转换为符号十进制数。

b ='0b101010'd = str2sym(b)
D=42

输入参数

全部崩溃

表示符号表达式的字符串,指定为字符向量,字符串或字符向量的单元数组。

提示

  • str2sym假定=操作员表示一个等式,而不是分配。

  • str2sym不创建输入中包含的变量。

  • str2sym('inf')返回无穷大(INF.).

  • str2sym('我')返回虚数1i.

在R2017b中引入