web-dev-qa-db-fra.com

Comment obtenir le type d'une variable dans MATLAB?

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

170
Dónal

Utilisez la fonction class

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

class() fonction 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 spécifique, vous pouvez utiliser ischar(), isfloat(), iscell(), etc.

64
Dima

Une autre fonction associée est whos . Il listera toutes sortes d'informations (dimensions, taille en octets, type) pour les variables d'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 
39
gnovice

Soyez prudent lorsque vous utilisez la fonction isa. Cela sera vrai si votre objet est du type spécifié ou une de ses sous-classes. Vous devez utiliser strcmp avec la fonction class pour vérifier si l'objet est spécifiquement de ce type et non pas une sous-classe.

25
Mike Katz

Comme personne ne l’a mentionné, MATLAB a également la fonction metaclass , qui renvoie un objet contenant diverses informations sur l’entité transmise. Ces objets meta.class peuvent être utiles pour les 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 class(someObj) est équivalent au champ Name du résultat de metaclass(someObj).

3
Dev-iL

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, vous pouvez utiliser la commande whos ou la fonction whos ().

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               

>> 
0
hygull