Main Content

最派生クラスのテスト

以下の入力を必要とする関数を定義する場合、

  • MATLAB® 組み込み型

  • MATLAB 組み込み型のサブクラス以外

以下の手法で入力引数から組み込み型のサブクラスを排除します。

  • 関数で受け入れることができる組み込み型の名前を含んだ cell 配列を定義します。

  • class および strcmp を呼び出して MATLAB コントロール ステートメント内の特定のデータ型をテストします。

以下のコードは、入力引数 inputArg をテストします。

if strcmp(class(inputArg),'single')
   % Call function
else
   inputArg = single(inputArg);
end

型のカテゴリのテスト

double 型または single 型の 2 つの数値入力を必要とする MEX 関数 myMexFcn を作成するとします。

outArray = myMexFcn(a,b)

単語 double および single を含む cell 配列 floatTypes を定義します。

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