Как получить тип переменной в MATLAB?



есть ли у MATLAB функция / оператор, который указывает тип переменной (аналогично typeof оператор в JavaScript)?

811   6  

6 ответов:

использовать class функции

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

class() функция является эквивалентом typeof()

вы также можете использовать isa() чтобы проверить, является ли переменная определенного типа. Если вы хотите быть еще более конкретным, вы можете использовать ischar(),isfloat(),iscell() и т. д.

другая связанная функция 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 

будьте осторожны при использовании . Это будет верно, если ваш объект указанного типа или один из его подклассов. Вы должны использовать strcmp С class функция для проверки, является ли объект именно этим типом, а не подклассом.

поскольку никто не упоминал об этом, 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).

MATLAB-проверка типа переменных

class () точно работает как Javascript typeof оператора.

чтобы получить более подробную информацию о переменных, которые можно использовать кто или whos ()

Comments

    Ничего не найдено.