Если вы задаете функции, которые требуют входов, которые:
MATLAB® встроенные типы
Не подклассы встроенных типов 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