Wie erhalte ich den Typ einer Variablen in MATLAB?

188

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

Dónal
quelle

Antworten:

231

Verwenden Sie die classFunktion

>> b = 2
b =
     2
>> a = 'Hi'
a =
Hi
>> class(b)
ans =
double
>> class(a)
ans =
char
Daniel LeCheminant
quelle
für Bedingungen:if ( string(class(b)) == 'double' ) fprintf(1, 'b is double'); end
khaverim
70

class() Funktion ist das Äquivalent von typeof()

Sie können auch isa()überprüfen, ob eine Variable von einem bestimmten Typ ist. Wenn Sie noch spezifischere sein wollen, können Sie verwenden ischar(), isfloat(), iscell()etc.

Dima
quelle
44

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 
gnovice
quelle
1
Die WHO- Funktion listet die Größe der Variablen nicht auf. Aus diesem Grund ist es viel schneller, wenn Ihr Arbeitsbereich überfüllt ist.
JaBe
27

Seien Sie vorsichtig, wenn Sie die isaFunktion verwenden. Dies gilt, wenn Ihr Objekt vom angegebenen Typ oder einer seiner Unterklassen ist. Sie müssen strcmpmit der classFunktion testen, ob das Objekt speziell von diesem Typ und nicht von einer Unterklasse ist.

Mike Katz
quelle
5

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

Beispielsweise:

>> 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)dies dem NameFeld des Ergebnisses von entspricht metaclass(someObj).

Teufel
quelle
0

MATLAB - Überprüfung des Variablentyps

Klasse () funktioniert genau wie Javascript des typeof - Operator.

Um weitere Details zu Variablen zu erhalten, können Sie den Befehl whos oder die Funktion 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               

>> 
Hygull
quelle
3
Dies fügt der aktuell akzeptierten Antwort nichts hinzu.
Rayryeng