Тестирование на больше-всего-производный-класс

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

  • 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