Main Content

coder.newtype

エントリポイント関数の入力の型を表す coder.Type オブジェクトを作成

説明

関数 coder.newtype は、coder.Type オブジェクトを制御するために使用できる高度な関数です。coder.newtype の代わりに coder.typeof を使用することを検討してください。関数 coder.typeof は MATLAB® の例から型を作成します。既定では、t = coder.newtype('class_name') は、クラス class_name のプロパティをオブジェクト t に割り当てません。

メモ

coder.Type オブジェクトの作成と編集は、コード生成の型エディターを使用して対話形式で行うこともできます。コード生成の型エディターを使用した入力の型の作成と編集を参照してください。

t = coder.newtype(numeric_class,sz,variable_dims) では、クラス numeric_class の値、サイズ sz (上限) および可変次元 variable_dims を表す coder.Type オブジェクトが作成されます。sz で次元に inf を指定する場合は、次元のサイズは無限で、次元は可変サイズです。variable_dims を指定しないと、制限のない次元を除き、この型の次元は固定になります。variable_dims がスカラーの場合は、1 または 0 (固定) ではない型の次元に適用されます。

t = coder.newtype(numeric_class,sz,variable_dims, Name,Value) では、1 つ以上の名前と値のペアの引数として指定された追加オプションを使用して、coder.Type オブジェクトが作成されます。

t = coder.newtype('constant',value) では、1 つの値を表す coder.Constant オブジェクトが作成されます。この型を使用して、生成されたコードで定数として扱わなければならない値を指定します。

t = coder.newtype('struct',struct_fields,sz,variable_dims) では、スカラー構造体 struct_fields と同じフィールドをもつ構造体の配列に対して coder.StructType オブジェクトが作成されます。構造体の配列型は、sz で指定されたサイズと、variable_dims で指定された可変サイズの次元をもちます。

t = coder.newtype('cell',cells,sz,variable_dims) は、cells で指定された cell と cell の型をもつ cell 配列の coder.CellType オブジェクトを作成します。cell 配列型は、sz で指定されたサイズと variable_dims で指定された可変サイズの次元をもちます。異種混合 cell 配列に対して、セルの数を変更したり、可変サイズの次元を指定したりすることはできません。

t = coder.newtype('embedded.fi',numerictype,sz,variable_dims, Name,Value) で作成される coder.FiType オブジェクトは、numerictype をもつ固定小数点値のセットと 1 つ以上の名前と値のペアの引数で指定された追加オプションを表します。

t = coder.newtype(enum_value,sz,variable_dims) では、クラス enum_value の列挙値のセットを表す coder.Type オブジェクトが作成されます。

t = coder.newtype('class_name') はクラス class_name のオブジェクトに coder.ClassType オブジェクトを作成します。新しいオブジェクトには、クラス class_name のプロパティは割り当てられません。

t = coder.newtype('string') は、string スカラーの coder.StringType オブジェクトを作成します。string スカラーには文字ベクトルとして表される 1 つのテキストが含まれます。文字ベクトルのサイズ、および 2 番目の次元が可変サイズであるかどうかを指定するには、StringLength プロパティを必要なサイズに設定し、VariableStringLengthtrue に設定します。たとえば、t.StringLength = 10t.VariableStringLength = true は、string スカラーが上限 10 の可変サイズであることを指定しています。

すべて折りたたむ

double で可変サイズ行列の型を作成します。

t = coder.newtype('double',[2 3 4],[1 1 0])
t = 

coder.PrimitiveType
   :2×:3×4 double
% ':' indicates variable-size dimensions

最初の次元は制限なし、2 番目の次元は固定サイズ double の行列の型を作成します。

t = coder.newtype('double',[inf,3]) 
t = 

coder.PrimitiveType
   :inf×3 double

t = coder.newtype('double',[inf,3],[1 0])
%  also returns 
t = 

coder.PrimitiveType
   :inf×3 double
%  ':' indicates variable-size dimensions

最初の次元は制限なし、2 番目の次元は上限サイズが 3 の可変サイズ double の行列の型を作成します。

t = coder.newtype('double',[inf,3],[0 1])
t = 

coder.PrimitiveType
   :inf×:3 double

%  ':' indicates variable-size dimensions

可変サイズ フィールドをもつ構造体の型を作成します。

ta = coder.newtype('int8',[1 1]);
tb = coder.newtype('double',[1 2],[1 1]);
t = coder.newtype('struct',struct('a',ta,'b',tb),[1 1],[1 1])
t = 

coder.StructType
   :1×:1 struct
      a: 1×1 int8
      b: :1×:2 double
% ':' indicates variable-size dimensions

異種混合 cell 配列の型を作成します。

ta = coder.newtype('int8',[1 1]);
tb = coder.newtype('double',[1 2],[1 1]);
t = coder.newtype('cell',{ta, tb})
t = 

coder.CellType
   1×2 heterogeneous cell 
      f1: 1×1 int8
      f2: :1×:2 double
% ':' indicates variable-size dimensions

同種 cell 配列の型を作成します。

ta = coder.newtype('int8',[1 1]);
tb = coder.newtype('int8',[1 2],[1 1]);
t = coder.newtype('cell',{ta, tb},[1,1],[1,1])
t = 

coder.CellType
   :1×:1 homogeneous cell 
      base: :1×:2 int8
% ':' indicates variable-size dimensions

コード生成で使用する新しい定数型を作成します。

t = coder.newtype('constant',42)
t = 

coder.Constant
       42

既存の MATLAB 列挙の名前を使用して、coder.EnumType オブジェクトを作成します。

1. 列挙 MyColors を定義します。MATLAB パス上に、次の要素が含まれる MyColors という名前のファイルを作成します。

classdef MyColors < int32
    enumeration
        green(1),
        red(2),
    end
end

2. この列挙から、coder.EnumType オブジェクトを作成します。

t = coder.newtype('MyColors')
t = 

coder.EnumType
   1×1 MyColors

コード生成で使用する固定小数点データ型を作成します。

固定小数点データ型では既定の fimath 値が使用されます。

t = coder.newtype('embedded.fi',numerictype(1, 16, 15),[1 2])
t = 

coder.FiType
   1×2 embedded.fi
             DataTypeMode: Fixed-point: binary point scaling
               Signedness: Signed
               WordLength: 16
           FractionLength: 15

コード生成で使用するオブジェクトの型を作成します。

1. 次の値クラスを作成します。

classdef mySquare
    properties
        side;
    end
    
    methods
        function obj = mySquare(val)
            if nargin > 0
                obj.side = val;
            end
        end
        
        function a = calcarea(obj)
            a = obj.side * obj.side;
        end
        
    end
end

2. mySquare と同じプロパティをもつオブジェクトの型を作成します。

t = coder.newtype('mySquare');

3. 前の手順によって tcoder.ClassType 型が作成されますが、これには mySquare のプロパティは割り当てられません。tmySquare のすべてのプロパティが確実に割り当てられるようにするには、t.Properties を使用してプロパティ side の型を変更します。

t.Properties.side = coder.typeof(int8(3))
t = 

coder.ClassType
   1×1 mySquare   
      side: 1×1 int8

コード生成で使用する string スカラーの型を作成します。

1. string スカラー型を作成します。

t = coder.newtype('string');

2. サイズを指定します。

t.StringLength = 10;

3. string を可変サイズにします。

t.VariableStringLength = true;

4. string を上限なしの可変サイズにするには、StringLengthInf に設定します。

t.StringLength = Inf;

メモ

StringLengthInf に設定すると、暗黙的に VariableStringLengthtrue に設定されます。

入力引数

すべて折りたたむ

型オブジェクトで表される値のセットのクラス。

例: coder.newtype('double',[6,3]);

データ型: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | struct | table | cell | function_handle | categorical | datetime | duration | calendarDuration | fi
複素数のサポート: あり

新しい構造体型でフィールドの指定に使用されるスカラー構造体。

例: coder.newtype('struct',struct('a',ta,'b',tb));

データ型: struct

新規 cell 配列型内でセルの型を指定する coder.Type オブジェクトの cell 配列。

例: coder.newtype('cell',{ta,tb});

データ型: cell

型オブジェクトの各次元を指定するサイズ ベクトル。sz 次元で異種混合 cell 配列の cell 数を変更することはできません。

例: coder.newtype('int8',[1 2]);

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
複素数のサポート: あり

coder.ClassType の作成元のクラス名。文字ベクトルまたは string スカラーとして指定します。class_name は値クラスの名前でなければなりません。

例: coder.newtype('mySquare')

データ型: char | string

variable_dims の値は、szinf の上限を指定する次元の場合は true、他のすべての次元の場合は false です。

各次元のサイズが可変 (true) か、固定 (false) かを指定する logical ベクトル。異種混合 cell 配列に対して可変サイズの次元を指定することはできません。

例: coder.newtype('char',[1,10],[0,1]);

データ型: logical

定数の実際の値を指定します。

例: coder.newtype('constant',41);

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | struct | table | cell

クラスの列挙値。

例: coder.newtype('MyColors');

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | struct | table | cell | function_handle | categorical | datetime | duration | calendarDuration | fi
複素数のサポート: あり

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後に表示されなければなりませんが、ペアの順序は重要ではありません。

R2021a より前は、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

例: t = coder.newtype('double',[10 20],sparse = true)

complextrue に設定すると、複素数値を表せる coder.Type オブジェクトを作成できます。データ型で複素数がサポートされていなければなりません。

ローカル fimath を指定します。fimath を指定しない場合、コード ジェネレーターは既定の fimath 値を使用します。

このオプションは coder.FiType オブジェクトを作成するときにのみ使用します。

sparsetrue に設定すると、スパース データを表す coder.Type オブジェクトを作成できます。データ型でスパース データがサポートされていなければなりません。

このオプションは次の場合はサポートされません。

  • coder.FiType オブジェクトを作成する。

  • gpu オプションを true に設定する。

gputrue に設定すると、GPU 入力型を表せる coder.Type オブジェクトを作成できます。このオプションには GPU Coder™ が必要です。

出力引数

すべて折りたたむ

新しい coder.Type オブジェクト。

制限

  • スパース行列の場合、coder.newtype は可変サイズの次元の上限を下げます。

  • GPU 入力型については、制限付きの数値と logical の基本データ型のみがサポートされます。スカラーの GPU 配列、構造体、cell 配列、クラス、列挙型、文字、半精度データ型、および固定小数点データ型はサポートされません。

  • coder.newtype を使用して GPU 入力を表す場合、GPU コード構成オブジェクトのメモリ割り当て (malloc) モード プロパティを 'discrete' に設定します。

ヒント

  • 引数 variable_dims で大きさが 1 の次元が可変サイズであることを明示的に指定していない限り、関数 coder.newtype は大きさが 1 の次元のサイズを固定します。

    たとえば、以下のコードでは 1 行 :10 列の double を指定します。最初の次元 (大きさが 1 の次元) は固定サイズです。2 番目の次元は可変サイズです。

    t = coder.newtype('double',[1 10],1)
    一方、以下のコードでは :1 行 :10 列の double を指定します。どちらの次元も可変サイズになります。
    t = coder.newtype('double',[1 10],[1 1])

  • MATLAB Function ブロックでは、入力信号または出力信号の大きさが 1 の次元は可変サイズにできません。

代替方法

coder.typeof

バージョン履歴

R2011a で導入