Does MATLAB have a function/operator that indicates the type of a variable (similar to the typeof
operator in JavaScript)?

- 30,738
- 21
- 105
- 131

- 185,044
- 174
- 569
- 824
6 Answers
Use the class
function:
>> b = 2
b =
2
>> a = 'Hi'
a =
Hi
>> class(b)
ans =
double
>> class(a)
ans =
char

- 30,738
- 21
- 105
- 131

- 50,583
- 16
- 120
- 115
-
for conditionals: `if ( string(class(b)) == 'double' ) fprintf(1, 'b is double'); end` – khaverim Apr 16 '20 at 18:09
-
Do note that you can overload the `class` method in a custom class to return any random string. – Cris Luengo Dec 08 '20 at 22:39
The class() function is the equivalent of typeof()
.
You can also use isa() to check if a variable is of a particular type. If you want to be even more specific, you can use ischar(), isfloat(), iscell(), etc.

- 30,738
- 21
- 105
- 131

- 38,860
- 14
- 75
- 115
-
Do note that in a custom class you can overload all of these methods to return anything you want. – Cris Luengo Dec 08 '20 at 22:40
Another related function is whos
. It will list all sorts of information (dimensions, byte size, type) for the variables in a given workspace.
>> 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

- 195
- 12

- 125,304
- 15
- 256
- 359
-
1The [WHO](http://www.mathworks.de/de/help/matlab/ref/who.html) function does not list the size of variables. Because of that it is much faster if your workspace is crowded. – JaBe Jul 01 '14 at 16:42
Be careful when using the isa function. This will be true if your object is of the specified type or one of its subclasses. You have to use strcmp with the class
function to test if the object is specifically that type and not a subclass.

- 30,738
- 21
- 105
- 131

- 2,060
- 2
- 17
- 25
-
Is this a response to [Dima's answer](https://stackoverflow.com/questions/578519/how-to-get-the-type-of-a-variable-in-matlab/578546#578546)? – Peter Mortensen Mar 28 '21 at 17:21
Since nobody mentioned it, MATLAB also has the metaclass
function, which returns an object with various bits of information about the passed-in entity. These meta.class
objects can be useful for tests of inheritance (via common comparison operators).
For example:
>> 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
We can see that class(someObj)
is equivalent to the Name
field of the result of metaclass(someObj)
.

- 23,742
- 7
- 57
- 99
MATLAB - Checking type of variables
class() exactly works like Javascript's typeof operator.
To get more details about variables you can use whos command or whos() function.
Here is the example code executed on MATLAB R2017a's Command Window.
>> % 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
>>

- 8,464
- 2
- 43
- 52