Comment obtenir le type d'une variable dans MATLAB?

188

MATLAB a-t-il une fonction / opérateur qui indique le type d'une variable (similaire à l' typeofopérateur en JavaScript)?

Dónal
la source

Réponses:

231

Utilisez la classfonction

>> b = 2
b =
     2
>> a = 'Hi'
a =
Hi
>> class(b)
ans =
double
>> class(a)
ans =
char
Daniel LeCheminant
la source
pour les conditions:if ( string(class(b)) == 'double' ) fprintf(1, 'b is double'); end
khaverim
70

class() function est l'équivalent de typeof()

Vous pouvez également utiliser isa()pour vérifier si une variable est d'un type particulier. Si vous voulez être encore plus précis, vous pouvez utiliser ischar(), isfloat(), iscell(), etc.

Dima
la source
44

Une autre fonction connexe est whos. Il listera toutes sortes d'informations (dimensions, taille d'octet, type) pour les variables dans un espace de travail donné.

>> 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 
novice
la source
1
La fonction OMS ne répertorie pas la taille des variables. Pour cette raison, il est beaucoup plus rapide si votre espace de travail est bondé.
JaBe
27

Soyez prudent lorsque vous utilisez la isafonction. Cela sera vrai si votre objet est du type spécifié ou de l' une de ses sous-classes. Vous devez utiliser strcmpavec la classfonction pour tester si l'objet est spécifiquement de ce type et non d'une sous-classe.

Mike Katz
la source
5

Puisque personne ne l'a mentionné, MATLAB a également la metaclassfonction, qui retourne un objet avec divers bits d'informations sur l'entité transmise. Celles-cimeta.class objets peuvent être utiles pour des tests d'héritage (via des opérateurs de comparaison courants).

Par exemple:

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

Nous pouvons voir que cela class(someObj)équivaut au Namechamp du résultat de metaclass(someObj).

Diable
la source
0

MATLAB - Vérification du type de variables

class () fonctionne exactement comme l' opérateur typeof de Javascript .

Pour obtenir plus de détails sur les variables que vous pouvez utiliser Whos commande ou Whos () fonction.

Voici l'exemple de code exécuté sur la fenêtre de commande de 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               

>> 
hygull
la source
3
Cela n'ajoute rien à la réponse actuellement acceptée.
rayryeng