matlab variables types

¿Cómo obtener el tipo de variable en MATLAB?



legend matlab (6)

MATLAB - Comprobando el tipo de variables

class () funciona exactamente como el operador typeof de Javascript.

Para obtener más detalles sobre las variables, puede usar el comando whos o la función whos () .

Aquí está el código de ejemplo ejecutado en la ventana de comandos 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 >>

¿MATLAB tiene una función / operador que indica el tipo de una variable (similar al operador de typeof en JavaScript)?


Como nadie lo mencionó, MATLAB también tiene la función de metaclass , que devuelve un objeto con varios bits de información sobre la entidad pasada. Estos objetos meta.class pueden ser útiles para pruebas de herencia (a través de operadores de comparación comunes).

Por ejemplo:

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

Podemos ver que la class(someObj) es equivalente al campo Name del resultado de metaclass(someObj) .


Otra función relacionada es whos . Enumerará todo tipo de información (dimensiones, tamaño de bytes, tipo) para las variables en un espacio de trabajo dado.

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


Tenga cuidado al usar la función isa . Esto será cierto si su objeto es del tipo especificado o una de sus subclases. Tienes que usar strcmp con la función de class para probar si el objeto es específicamente ese tipo y no una subclase.


Usa la función de class

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


class() es el equivalente de typeof()

También puede usar isa() para verificar si una variable es de un tipo particular. Si quieres ser aún más específico, puedes usar ischar() , isfloat() , iscell() , etc.