Чтобы определить класс массива, используйте class функция:
a = [2,5,7,11]; class(a)
ans = double
str = 'Character array';
class(str)ans = char
isa функция позволяет проверить определенный класс или категорию числового класса (numeric, float, integer):
a = [2,5,7,11];
isa(a,'double')
ans =
1Значения с плавающей запятой (значения с одинарной и двойной точностью):
isa(a,'float')
ans =
1Числовые значения (значения с плавающей запятой и целочисленные значения):
isa(a,'numeric')
ans =
1isa возвращает значение true для классов, полученных из указанного класса. Например, SubInt класс является производным от встроенного типа int16:
classdef SubInt < int16 methods function obj = SubInt(data) if nargin == 0 data = 0; end obj = obj@int16(data); end end end
По определению, экземпляр SubInt класс также является экземпляром int16 класс:
aInt = SubInt;
isa(aInt,'int16')
ans =
1Использование integer категория также возвращает true:
isa(aInt,'integer')
ans =
1 class функция возвращает имя наиболее производного класса объекта:
class(aInt)
ans = SubInt
Используйте strcmp функции с помощью class для проверки определенного класса объекта:
a = int16(7);
strcmp(class(a),'int16')
ans =
1Потому что class функция возвращает имя класса в виде char вектор, наследование не влияет на результат сравнения, выполненного strcmp:
aInt = SubInt;
strcmp(class(aInt),'int16')
ans =
0При определении функций, требующих ввода:
Встроенные типы MATLAB ®
Не подклассы встроенных типов MATLAB
Используйте следующие методы, чтобы исключить подклассы встроенных типов из входных аргументов.
Проверьте входной аргумент:
if strcmp(class(inputArg),'single') % Call function else inputArg = single(inputArg); end
Предположим, что вы создаете MEX-функцию, myMexFcn, что требует двух числовых входных данных, которые должны иметь тип double или single:
outArray = myMexFcn(a,b)
Определение массива ячеек, содержащего массивы символов double и single:
floatTypes = {'double','single'};% Test for proper types if any(strcmp(class(a),floatTypes)) && ... any(strcmp(class(b),floatTypes)) outArray = myMexFcn(a,b); else % Try to convert inputs to avoid error ... end
Использовать isobject для выделения встроенных типов из подклассов встроенных типов. isobject функция возвращает false для экземпляров встроенных типов:
% Create a int16 array
a = int16([2,5,7,11]);
isobject(a)
ans =
0Определите, является ли массив одним из встроенных целочисленных типов:
if isa(a,'integer') && ~isobject(a) % a is a built-in integer type ... end