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