Есть ли в MATLAB функция / оператор, указывающий тип переменной (аналогично оператору typeof в JavaScript)?
Вопрос
Как получить тип переменной в MATLAB
Ответы
Ответ 1 · рейтинг 233 · Daniel LeCheminant
Используйте функцию class:
>> b = 2
b =
2
>> a = 'Hi'
a =
Hi
>> class(b)
ans =
double
>> class(a)
ans =
char
Ответ 2 · рейтинг 71 · Dima
Функция class () эквивалентна typeof().
Вы также можете использовать isa (), чтобы проверить, имеет ли переменная особый тип. Если вы хотите быть более конкретным, вы можете использовать ischar (), isfloat (), iscell () и т. д.
Ответ 3 · рейтинг 45 · gnovice
Другая связанная функция - 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 · рейтинг 27 · Mike Katz
Будьте осторожны при использовании функции isa. Это будет верно, если ваш объект имеет указанный тип или один из его подклассов. Вы должны использовать strcmp с функцией class, чтобы проверить, именно этот тип, а не подкласс.
Ответ 5 · рейтинг 5 · Dev-iL
Поскольку никто не упомянул об этом, 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).
Ответ 6 · hygull
MATLAB - Проверка типа переменных
class () работает точно так же, как оператор typeof в JavaScript.
Чтобы получить более подробную информацию о переменных, вы можете использовать команду whos или функцию whos ().
Вот пример кода, выполняемого в командном окне 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
>>
Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.
Похожие материалы
- GWT - типы оверлеев JavaScript и JSON
- Python: проверьте, можно ли преобразовать значение в int в понимании списка
- Какое значение лучше использовать? Булева истина или целое число 1?
- Упрощенная проверка типов при использовании конструкции with type в модулях
- Начать новую деятельность
- Получить значения из файла конфигурации на основе переменной