コマンド ラインでの cell 配列入力の指定
コマンド ラインで cell 配列入力を指定するには、他の入力の型で使用する場合と同じメソッドを使用します。次のことが可能です。
cell 配列入力の例を
codegen
コマンドの-args
オプションに指定します。coder.CellType
オブジェクトをcodegen
コマンドの-args
オプションに指定します。coder.CellType
オブジェクトを作成するには、coder.typeof
を使用します。coder.Constant
を使用して定数の cell 配列入力を指定します。
コード生成の場合、cell 配列は同種または異種混合として分類されます。cell 配列のコード生成を参照してください。cell 配列の例を codegen
または 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
はヒューリスティックな方法を使用して型を同種または異種混合として分類します。異なる分類が必要な場合は、coder.CellType
makeHomogeneous
メソッドまたは makeHeterogeneous
メソッドを使用します。makeHomogeneous
メソッドは型の同種コピーを作成します。makeHeterogeneous
メソッドは型の異種混合コピーを作成します。
makeHomogeneous
メソッドと makeHeterogeneous
メソッドは分類を同種および異種混合としてそれぞれ永続的に割り当てます。これらのいずれかの方法を後で使用して分類が異なるコピーを作成することはできません。
テスト ファイルがある場合、coder.getArgTypes
を使用して入力の型を判別できます。型の出力 cell 配列では、cell 配列の入力に対して coder.getArgTypes
から coder.CellType
オブジェクトが返されます。異なる分類 (同種または異種混合) が必要な場合、makeHomogeneous
メソッドまたは makeHeterogeneous
メソッドを使用します。
例による cell 配列入力の指定
例によって cell 配列入力を指定するには、cell 配列の例を codegen
コマンドの -args
オプションに指定します。
以下に例を示します。
クラスが double の要素をもつ 1 行 3 列の cell 配列を指定するには、次のようにします。
codegen myfunction -args {{1 2 3}} -report
入力引数は、要素が 1 行 1 列の double をもつ 1 行 3 列の同種 cell 配列になります。
最初の要素にクラス char、2 番目の要素にクラス double をもつ 1 行 2 列の cell 配列を指定するには、次のようにします。
codegen myfunction -args {{'a', 1}} -report
入力引数は、最初の要素が 1 行 1 列の char、2 番目の要素が 1 行 1 列の double をもつ 1 行 2 列の異種混合 cell 配列になります。
cell 配列入力の型の指定
cell 配列入力の型を指定するには、coder.typeof
を使用して coder.CellType
オブジェクトを作成します。coder.CellType
オブジェクトを、codegen
コマンドの -args
オプションに渡します。
以下に例を示します。
クラスが double の要素をもつ 1 行 3 列の cell 配列を指定するには、次のようにします。
t = coder.typeof({1 2 3}); codegen myfunction -args {t} -report
入力引数は、要素が 1 行 1 列の double をもつ 1 行 3 列の同種 cell 配列になります。
最初の要素にクラス char、2 番目の要素にクラス double をもつ 1 行 2 列の cell 配列を指定するには、次のようにします。
t = coder.typeof({'a', 1}); codegen myfunction -args {t}
入力引数は、最初の要素が 1 行 1 列の char、2 番目の要素が 1 行 1 列の double をもつ 1 行 2 列の異種混合 cell 配列になります。
また、高度な関数 coder.newtype
を使用して coder.CellType
オブジェクトを作成することもできます。
同種型のコピーの作成
coder.typeof
が異種混合 cell 配列型を返すとき、同種の型が必要な場合は、makeHomogeneous
メソッドを使用して、型の同種コピーを作成します。
次のコードは異種混合の型を作成します。
t = coder.typeof({1 [2 3]})
t = coder.CellType 1x2 heterogeneous cell f0: 1x1 double f1: 1x2 double
型の同種コピーを作成するには、次を使用します。
t = makeHomogeneous(t)
t = coder.CellType 1×2 locked homogeneous cell base: 1×:2 double
あるいは、次の表記法を使用します。
t = makeHomogeneous(coder.typeof({1 [2 3]}))
t = coder.CellType 1×2 locked homogeneous cell base: 1×:2 double
同種としての分類はロックされています (永続的)。後で makeHeterogeneous
メソッドを使用して型の異種混合コピーを作成することはできません。
型の要素に char や double などの異なるクラスがある場合、makeHomogeneous
を使用して型の同種コピーを作成することはできません。
coder.cstructname
を使用して生成されたコード内で型を表す構造体型の名前を指定する場合、型の同種コピーを作成することはできません。
型の異種混合コピーの作成
coder.typeof
が同種 cell 配列型を返すとき、異種混合の型が必要な場合は、makeHeterogeneous
メソッドを使用して、型の異種混合コピーを作成します。
次のコードは同種の型を作成します。
t = coder.typeof({1 2 3})
t = coder.CellType 1x3 homogeneous cell base: 1x1 double
異種混合の型を作成するには、次を使用します。
t = makeHeterogeneous(t)
t = coder.CellType 1×3 locked heterogeneous cell f1: 1×1 double f2: 1×1 double f3: 1×1 double
あるいは、次の表記法を使用します。
t = makeHeterogeneous(coder.typeof({1 2 3}))
t = coder.CellType 1×3 locked heterogeneous cell f1: 1×1 double f2: 1×1 double f3: 1×1 double
異種混合としての分類はロックされています (永続的)。後で makeHomogeneous
メソッドを使用して型の同種コピーを作成することはできません。
型が可変サイズの場合、makeHeterogeneous
を使用してその異種混合コピーを作成することはできません。
可変サイズの cell 配列入力の指定
可変サイズの cell 配列入力は次の方法で指定できます。
coder.typeof
の呼び出しでは、次のようにします。たとえば、最初の次元が固定、2 番目の次元の上限が 5 である可変サイズの cell 配列を指定する場合は、次のようにします。
t = coder.typeof({1}, [1 5], [0 1])
t = coder.CellType 1x:5 homogeneous cell base: 1x1 double
クラスが同じでサイズが異なる要素の場合、
coder.typeof
のサイズと可変次元の引数を使用して、可変サイズの同種 cell 配列型を作成できます。たとえば、次のコードではサイズと可変次元の引数を使用しません。このコードは異種混合 cell 配列に型を作成します。t = coder.typeof({1 [2 3]})
t = coder.CellType 1x2 heterogeneous cell f0: 1x1 double f1: 1x2 double
次のコードでは、サイズと次元の引数を使用して、可変サイズの同種型 cell 配列の型を作成します。
t = coder.typeof({1 [2 3]}, [1 5], [0 1])
t = coder.CellType 1×:5 locked homogeneous cell base: 1×:2 double
coder.resize
を使用します。たとえば、最初の次元が固定、2 番目の次元の上限が 5 である可変サイズの cell 配列を指定する場合は、次のようにします。
t = coder.typeof({1}); t = coder.resize(t, [1 5], [0,1])
t = coder.CellType 1x5 homogeneous cell base: 1x1 double
coder.resize
を異種混合 cell 配列型と共に使用することはできません。
異種混合 cell 配列入力に対する型の名前の指定
異種混合 cell 配列は、生成されたコードで構造体として表されます。生成されたコードで構造体型の名前を指定するには、coder.cstructname
を使用します。
たとえば、生成されたコードで cell 配列型の名前 myname
を指定する場合、次のようにします。
t = coder.typeof({'a', 1}) t = coder.cstructname(t, 'myname')
t = coder.CellType 1×2 locked heterogeneous cell myname f1: 1×1 char f2: 1×1 double
coder.cstructname
を同種 cell 配列型で使用する場合、coder.cstructname
はこの型の異種混合コピーを返します。ただし、同種 cell 配列型の異種混合コピーを作成する場合は、coder.CellType
オブジェクトの makeHeterogeneous
メソッドを使用することをお勧めします。その後で、この型の異種混合コピーで coder.cstructname
を使用できます。
定数の cell 配列入力の指定
cell 配列入力を定数として指定するには、codegen
コマンドの -args
オプションと共に関数 coder.Constant
を使用します。以下に例を示します。
codegen myfunction -args {coder.Constant({'red',1,'green',2,'blue',3})} -report
入力は 1 行 6 列の異種混合 cell 配列になります。要素のサイズとクラスは次のとおりです。
1 行 3 列 char
1 行 1 列 double
1 行 5 列 char
1 行 1 列 double
1 行 4 列 char
1 行 1 列 double
参考
coder.CellType
| coder.typeof
| coder.getArgTypes
| coder.resize
| coder.newtype