如何在MATLAB中获取变量的类型?

时间:2009-02-23 17:27:58

标签: matlab variables types

MATLAB是否有一个函数/运算符来指示变量的类型(类似于JavaScript中的typeof运算符)?

6 个答案:

答案 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功能时要小心。如果您的对象具有指定类型其子类之一,则会出现这种情况。您必须使用strcmpclass函数来测试对象是否是特定类型而不是子类。

答案 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)

MATLAB - 检查变量类型

  

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) 
)})