Проверка для наиболее производного класса

Если вы задаете функции, которые требуют входов, которые:

  • MATLAB® встроенные типы

  • Не подклассы встроенных типов MATLAB

используйте следующий метод, чтобы исключить подклассы встроенных типов из входных параметров.

  • Задайте массив ячеек, который содержит имена встроенных типов, принятых вашей функцией.

  • Звонить class и strcmp для проверки определенных типов в операторе управления MATLAB.

Следующий код проверяет входной параметр, inputArg:

if strcmp(class(inputArg),'single')
   % Call function
else
   inputArg = single(inputArg);
end

Проверка на категорию типов

Предположим, что вы создаете MEX-функцию, myMexFcn, что требует двух числовых входов, которые должны быть типа double или single:

outArray = myMexFcn(a,b)

Задайте массив ячеек floatTypes который содержит слова 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