如何在Matlab中区分vpa和sym

问题描述

标题已经说过了。给定三个变量:

d = 2;
s = sym(2);
v = vpa(2);

如何识别哪个变量属于哪种类型。显然,要确定双打,我可以做isa( d,'double' )。但是我知道的用于识别符号变量的所有方法都无法区分vpasym,例如isa( s,'sym' )isa( v,'sym' )都返回true

解决方法

vpa(2)Luis Mendo在评论12 中指出的符号。

您要寻找的是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。