Comment obtenir le type d’une variable dans MATLAB?

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

Utilisez la fonction de class

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

class() 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.

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 Atsortingbutes a 1x3 24 double >> b = 'James Bond'; >> whos b Name Size Bytes Class Atsortingbutes b 1x10 20 char 

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

Comme personne ne l’a mentionné, MATLAB a également la fonction de metaclass , qui renvoie un object avec différents bits d’information sur l’entité passée. Ces objects meta.class peuvent être utiles pour les tests d’inheritance (via des opérateurs de comparaison communs).

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] RessortingctsSubclassing: 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 la class(someObj) est équivalente au champ Name du résultat de la metaclass(someObj) .

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 fonction whos ou la fonction whos () .

Voici le code exemple 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 Atsortingbutes num 1x1 8 double >> whos myName Name Size Bytes Class Atsortingbutes myName 1x17 34 char >> whos cellArr Name Size Bytes Class Atsortingbutes cellArr 1x5 634 cell >> % Another way to use whos ie using whos(char_vector) >> whos('cellArr') Name Size Bytes Class Atsortingbutes cellArr 1x5 634 cell >> whos('num') Name Size Bytes Class Atsortingbutes num 1x1 8 double >> whos('myName') Name Size Bytes Class Atsortingbutes myName 1x17 34 char >>