Matlab中如何区分vpa和sym

How to differentiate between vpa and sym in Matlab

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

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

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

vpa(2)Luis Mendo in the comments , 指出的符号。

您要查找的是 isSymType(在 R2019a 中引入)。

isSymType(s,'integer')
isSymType(v,'vpareal')

通过利用 vpa 是一个浮点数,可以在 Matlab R2018b 及更早版本中执行以下操作:

isAlways( s+10^sym(-100000)==s )
isAlways( v+10^sym(-100000)==v )

第一个returns错误,第二个正确。


不幸的是,这似乎不再适用于 Matlab R2020a。