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

Dón*_*nal 184 variables matlab types

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

Dan*_*ant 228

使用该class功能

>> b = 2
b =
     2
>> a = 'Hi'
a =
Hi
>> class(b)
ans =
double
>> class(a)
ans =
char
Run Code Online (Sandbox Code Playgroud)


Dim*_*ima 67

class() 功能相当于 typeof()

您还可以使用isa()检查变量是否属于特定类型.如果你想更具体的,你可以使用ischar(),isfloat(),iscell(),等.


gno*_*ice 43

另一个相关功能是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 
Run Code Online (Sandbox Code Playgroud)


Mik*_*atz 27

使用此isa功能时要小心.如果您的对象是指定类型或其子类之一,则会出现这种情况.您必须使用strcmpclass函数来测试对象是否特定于该类型而不是子类.


Dev*_*-iL 5

由于没有人提到它,MATLAB还具有该metaclass函数,该函数返回带有有关传入实体各种信息的对象。这些meta.class对象对于继承测试(通过通用比较运算符)很有用。

例如:

>> 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
Run Code Online (Sandbox Code Playgroud)

我们可以看到,class(someObj)它等于Name的结果字段metaclass(someObj)