Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

isHeterogeneous

クラス: coder.CellType
名前空間: coder

cell 配列型が異種混合 cell 配列を表すかどうかの判定

構文

tf = isHeterogeneous(t)

説明

tf = isHeterogeneous(t) は、coder.CellType オブジェクト t が異種混合の場合、true を返します。それ以外の場合は false を返します。

すべて展開する

異なるクラスの要素をもつ cell 配列に coder.CellType オブジェクトを作成します。

t = coder.typeof({'a', 1})
t = 

coder.CellType
   1x2 heterogeneous cell 
      f0: 1x1 char
      f1: 1x1 double

coder.CellType オブジェクトが異種混合 cell 配列を表すかどうかを判定します。

isHeterogeneous(t)
ans =

     1

関数 assign_name を記述します。入力型 t が異種混合の場合、関数は t のコピーを返します。このコピーは、生成されたコード内の cell 配列型を表す構造体型の名前を指定します。

function ts = assign_name(t, str_name)
assert(isHeterogeneous(t));
ts = coder.cstructname(t, str_name);
disp ts
end

同種型の tc を作成します。

tc = coder.typeof({1 2 3});

tcmake_varsize に渡します。

tc1 = assign_name(tc, 'myname')

tc が異種混合でないため、アサーションに失敗します。

異種混合型の tc を作成します。

tc = coder.typeof({'a' 1});

tcmake_varsize に渡します。

tc1 = assign_name(tc, 'myname')
tc1 = 

coder.CellType
   1x2 heterogeneous cell myname
      f0: 1x1 char
      f1: 1x1 double

ヒント

  • coder.typeof は cell 配列型が同種または異種混合のどちらであるかを判定します。cell 配列要素のクラスとサイズが同じ場合、coder.typeof は同種 cell 配列型を返します。要素のクラスが異なる場合、coder.typeof は異種混合 cell 配列型を返します。一部の cell 配列では、同種であるか異種混合であるかの分類はあいまいです。たとえば、{1 [2 3]} の型に 1 行 2 列の異種混合型を使用できます。最初の要素は double で 2 番目の要素は 1 行 2 列の double です。また、この型を 1 行 3 列の同種型にして、その要素のクラスを double で、サイズを 1 行 :2 列にすることもできます。このようなあいまいなケースでは、coder.typeof はヒューリスティックな方法を使用して型を同種または異種混合として分類します。異なる分類が必要な場合は、makeHomogeneous メソッドまたは makeHeterogeneous メソッドを使用します。makeHomogeneous メソッドは型の同種コピーを作成します。makeHeterogeneous メソッドは型の異種混合コピーを作成します。

    makeHomogeneous メソッドと makeHeterogeneous メソッドは分類を同種および異種混合としてそれぞれ永続的に割り当てます。これらのいずれかの方法を後で使用して分類が異なるコピーを作成することはできません。

バージョン履歴

R2015b で導入