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