Имеется ли в MATLAB функция/оператор, указывающая тип переменной (аналогично оператору typeof
в JavaScript)?
Как получить тип переменной в MATLAB?
Ответ 1
Используйте функцию class
>> b = 2
b =
2
>> a = 'Hi'
a =
Hi
>> class(b)
ans =
double
>> class(a)
ans =
char
Ответ 2
class()
функция эквивалентна typeof()
Вы также можете использовать isa()
, чтобы проверить, является ли переменная определенного типа.
Если вы хотите быть более конкретным, вы можете использовать ischar()
, isfloat()
, iscell()
и т.д.
Ответ 3
Другая связанная функция whos
. Он будет перечислять все виды информации (размеры, размер байта, тип) для переменных в заданной рабочей области.
>> 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
Ответ 4
Будьте внимательны при использовании функции isa
. Это будет верно, если ваш объект имеет указанный тип или один из его подклассов. Вы должны использовать strcmp
с помощью функции class
, чтобы проверить, является ли объект конкретным типом, а не подклассом.
Ответ 5
Поскольку никто не упоминал об этом, MATLAB также имеет функцию metaclass
, которая возвращает объект с различными битами информации о переданном, в сущности. Эти объекты meta.class
могут быть полезны для тестов наследования (через общие операторы сравнения).
Например:
>> 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
Мы видим, что class(someObj)
эквивалентно полю Name
результата metaclass(someObj)
.