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


188

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

Answers:


231

使用class功能

>> b = 2
b =
     2
>> a = 'Hi'
a =
Hi
>> class(b)
ans =
double
>> class(a)
ans =
char

对于条件:if ( string(class(b)) == 'double' ) fprintf(1, 'b is double'); end
khaverim

70

class() 功能相当于 typeof()

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


44

另一个相关功能是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 

1
WHO功能没有列出的变量的大小。因此,如果您的工作区很拥挤,速度会更快。
JaBe 2014年

27

使用该isa功能时要小心。如果您的对象是指定的类型或其子类之一,则为true 。您必须strcmp与该class函数一起使用,以测试对象是否特别是该类型而不是子类。


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

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


0

MATLAB-检查变量类型

class()的工作原理完全类似于Javascript的typeof运算符。

要获取有关变量的更多详细信息,可以使用whos命令或whos()函数。

这是在MATLAB R2017a的命令窗口上执行的示例代码。

>> % Define a number
>> num = 67

num =

    67

>> % Get type of variable num
>> class(num)

ans =

    'double'

>> % Define character vector
>> myName = 'Rishikesh Agrawani'

myName =

    'Rishikesh Agrwani'

>> % Check type of myName
>> class(myName)

ans =

    'char'

>> % Define a cell array
>> cellArr = {'This ', 'is ', 'a ', 'big chance to learn ', 'MATLAB.'}; % Cell array
>> 
>> class(cellArr)

ans =

    'cell'

>> % Get more details including type
>> whos num
  Name      Size            Bytes  Class     Attributes

  num       1x1                 8  double              

>> whos myName
  Name        Size            Bytes  Class    Attributes

  myName      1x17               34  char               

>> whos cellArr
  Name         Size            Bytes  Class    Attributes

  cellArr      1x5               634  cell               

>> % Another way to use whos i.e using whos(char_vector)
>> whos('cellArr')
  Name         Size            Bytes  Class    Attributes

  cellArr      1x5               634  cell               

>> whos('num')
  Name      Size            Bytes  Class     Attributes

  num       1x1                 8  double              

>> whos('myName')
  Name        Size            Bytes  Class    Attributes

  myName      1x17               34  char               

>> 

3
这不会为当前接受的答案添加任何内容。
rayryeng '18年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.