exponenta event banner

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

При определении функций, требующих ввода:

  • Встроенные типы 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