最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

コマンド ラインでの 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 です。型に、double のクラスと 1 行 :2 列のサイズをもつ要素の 1 行 3 列の同種型を使用することもできます。このようなあいまいなケースでは、coder.typeof はヒューリスティックな方法を使用して型を同種または異種混合として分類します。異なる分類が必要な場合は、coder.CellTypemakeHomogeneous メソッドまたは 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

参考

| | | |

関連する例

詳細