Як отримати тип змінної в MATLAB?


188

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

Відповіді:



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
Функція ВООЗ не перелічує розмір змінних. Через це набагато швидше, якщо ваша робоча область переповнена.
JaBe

27

Будьте обережні, використовуючи 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).


0

MATLAB - Перевірка типу змінних

class () точно працює як оператор typeof Javascript .

Щоб отримати більш детальну інформацію про змінних , які можна використовувати 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.