MATLAB是否有一个函数/运算符来指示变量的类型(类似于JavaScript中的typeof
运算符)?
答案 0 :(得分:223)
使用class
功能
>> b = 2
b =
2
>> a = 'Hi'
a =
Hi
>> class(b)
ans =
double
>> class(a)
ans =
char
答案 1 :(得分:65)
class()
函数相当于typeof()
您还可以使用isa()
检查变量是否属于特定类型。
如果您想更加具体,可以使用ischar()
,isfloat()
,iscell()
等。
答案 2 :(得分:39)
另一个相关功能是whos
。它将列出给定工作空间中变量的各种信息(维度,字节大小,类型)。
>> a = [0 0 7];
>> whos a
Name Size Bytes Class Attributes
a 1x3 24 double
>> b = 'James Bond';
>> whos b
Name Size Bytes Class Attributes
b 1x10 20 char
答案 3 :(得分:25)
使用isa
功能时要小心。如果您的对象具有指定类型或其子类之一,则会出现这种情况。您必须使用strcmp
和class
函数来测试对象是否是特定类型而不是子类。
答案 4 :(得分:3)
由于没有人提及它,MATLAB还具有Wikipedia函数,该函数返回一个对象,其中包含有关传入实体的各种信息。这些metaclass
对象可用于继承测试(通过常见的比较运算符)。
例如:
>> metaclass(magic(1))
ans =
class with properties:
Name: 'double'
Description: ''
DetailedDescription: ''
Hidden: 0
Sealed: 0
Abstract: 0
Enumeration: 0
ConstructOnLoad: 0
HandleCompatible: 0
InferiorClasses: {0×1 cell}
ContainingPackage: [0×0 meta.package]
RestrictsSubclassing: 0
PropertyList: [0×1 meta.property]
MethodList: [272×1 meta.method]
EventList: [0×1 meta.event]
EnumerationMemberList: [0×1 meta.EnumeratedValue]
SuperclassList: [0×1 meta.class]
>> ?containers.Map <= ?handle
ans =
logical
1
我们可以看到class(someObj)
相当于Name
结果的metaclass(someObj)
字段。
答案 5 :(得分:0)
class()与Javascript的 typeof 运算符完全相同。
要获取有关变量的更多详细信息,您可以使用 whos 命令或 whos()功能。
以下是在 MATLAB R2017a 的命令窗口中执行的示例代码。
l1.repartition(10).foreachPartition(f=>{f.foreach(f=>
...
val rdd = context.parallelize(Seq(r1))
val dff = sqlCotext.read.schema(schema).json(rdd.toDS)
)})