问题描述
标题已经说过了。给定三个变量:
d = 2;
s = sym(2);
v = vpa(2);
如何识别哪个变量属于哪种类型。显然,要确定双打,我可以做isa( d,'double' )
。但是我知道的用于识别符号变量的所有方法都无法区分vpa
和sym
,例如isa( s,'sym' )
和isa( v,'sym' )
都返回true
。
解决方法
vpa(2)
是Luis Mendo在评论1,2 中指出的符号。
您要寻找的是isSymType
(在R2019a中引入)。
isSymType(s,'integer')
isSymType(v,'vpareal')
,
通过利用vpa
是浮点数,可以在Matlab R2018b及更高版本中执行以下操作:
isAlways( s+10^sym(-100000)==s )
isAlways( v+10^sym(-100000)==v )
第一个返回false,第二个返回true。