it-swarm.com.de

Wie bekomme ich den Typ einer Variablen in MATLAB?

Verfügt MATLAB über eine Funktion/einen Operator, der den Typ einer Variablen angibt (ähnlich dem Operator typeof in JavaScript)?

170
Dónal

Verwenden Sie die class-Funktion

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

Die Funktion class() entspricht typeof().

Sie können isa() auch verwenden, um zu prüfen, ob eine Variable einen bestimmten Typ hat Wenn Sie noch genauer sein möchten, können Sie ischar(), isfloat(), iscell() usw. verwenden.

64
Dima

Eine andere verwandte Funktion ist whos . Es werden alle Arten von Informationen (Dimensionen, Bytegröße, Typ) für die Variablen in einem bestimmten Arbeitsbereich aufgelistet.

>> 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 
39
gnovice

Seien Sie vorsichtig, wenn Sie die Funktion isa verwenden. Dies ist wahr, wenn Ihr Objekt den angegebenen Typ oder einer seiner Unterklassen hat. Sie müssen strcmp mit der Funktion class verwenden, um zu testen, ob das Objekt speziell diesen Typ und keine Unterklasse hat.

25
Mike Katz

Da es niemand erwähnt hat, hat MATLAB auch die Funktion metaclass , die ein Objekt mit verschiedenen Informationen über die übergebene Entität zurückgibt. Diese meta.class - Objekte können für Vererbungstests nützlich sein (über übliche Vergleichsoperatoren).

Zum Beispiel:

>> 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

Wir können sehen, dass class(someObj) dem Name-Feld des Ergebnisses von metaclass(someObj) entspricht.

3
Dev-iL

MATLAB - Typ der Variablen prüfen

class () funktioniert genau wie Javascript typeof operator.

Um weitere Informationen zu Variablen zu erhalten, können Sie die Funktion whos command oder whos () verwenden.

Hier ist der Beispielcode, der im Befehlsfenster von MATLAB R2017a ausgeführt wird.

>> % 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               

>> 
0
hygull