Risposte:
Usa la class
funzione
>> b = 2
b =
2
>> a = 'Hi'
a =
Hi
>> class(b)
ans =
double
>> class(a)
ans =
char
Un'altra funzione correlata è whos
. Elencherà tutti i tipi di informazioni (dimensioni, dimensione dei byte, tipo) per le variabili in un determinato spazio di lavoro.
>> 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
Poiché nessuno lo ha menzionato, MATLAB ha anche la metaclass
funzione, che restituisce un oggetto con vari bit di informazioni sull'entità passata. Questimeta.class
oggetti possono essere utili per i test di ereditarietà (tramite operatori di confronto comuni).
Per esempio:
>> 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
Possiamo vedere che class(someObj)
è equivalente al Name
campo del risultato di metaclass(someObj)
.
class () funziona esattamente come l' operatore typeof di Javascript .
Per avere maggiori dettagli sulle variabili che è possibile utilizzare whos comando o () whos funzione.
Ecco il codice di esempio eseguito nella finestra di comando di 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
>>
if ( string(class(b)) == 'double' ) fprintf(1, 'b is double'); end