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