Имеется ли в MATLAB функция/оператор, указывающая тип переменной (аналогично оператору typeof в JavaScript)?
Как получить тип переменной в MATLAB?
Ответ 1
Используйте функцию class
>> b = 2
b =
     2
>> a = 'Hi'
a =
Hi
>> class(b)
ans =
double
>> class(a)
ans =
char
Ответ 2
 class() функция эквивалентна typeof()
Вы также можете использовать isa(), чтобы проверить, является ли переменная определенного типа.
Если вы хотите быть более конкретным, вы можете использовать ischar(), isfloat(), iscell() и т.д.
Ответ 3
Другая связанная функция 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 
Ответ 4
Будьте внимательны при использовании функции isa. Это будет верно, если ваш объект имеет указанный тип или один из его подклассов. Вы должны использовать 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).
