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

coder.newtype

coder.Type オブジェクトの作成

説明

メモ

coder.newtype は、coder.Type オブジェクトを制御するために使用できる高度な関数です。代わりに coder.typeof の使用を検討してください。coder.typeof は MATLAB® の例から型を作成します。

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

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

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 オブジェクトを作成します。

t = coder.newtype('string') は string スカラーの型を作成します。string スカラーには文字ベクトルとして表される 1 つのテキストが含まれます。文字ベクトルのサイズ、および 2 番目の次元が可変サイズであるかどうかを指定するには、文字ベクトルの型を作成し、それを string スカラー型の Value プロパティに割り当てます。たとえば、t.Properties.Value = coder.newtype('char',[1 10], [0 1]) は、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 の行列の型を作成します。

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

coder.PrimitiveType
   :inf×3 double

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

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

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

コード生成で使用する構造体型を作成します。

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

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]);
coder.newtype('cell',{ta, tb})
% returns 1x2 heterogeneous cell
ans = 

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

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

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

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');

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

固定小数点データ型では既定の 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
    
    end
    function a = calcarea(obj)
    a = obj.side * obj.side;
    end
end

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

t = coder.newtype('mySquare')

3.プロパティ 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.Properties.Value = coder.newtype('char',[1, 10])

3.string を上限が 10 の可変サイズにします。

t.Properties.Value = coder.newtype('char',[1, 10], [0, 1])

4.string を上限なしの可変サイズにします。

t.Properties.Value = coder.newtype('char',[1, inf])

入力引数

すべて折りたたむ

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

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

データ型: 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 配列に対してセルの数を変更することはできません。

例: 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

szinf の上限を指定する次元に対して true を返し、他のすべての次元に対して false を返します。

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

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

データ型: logical

クラスの列挙値。

例: 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
複素数のサポート: あり

名前と値のペアの引数

オプションのコンマ区切りされた Name,Value の引数ペアを指定します。ここで、Name は引数名、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペア引数を任意の順序で指定できます。

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

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

ローカル fimath を指定します。fimath を指定しない場合は、既定の fimath 値が使用されます。

t=coder.newtype('embedded.fi', numerictype,sz, variable_dims, Name,Value) でのみ使用します。

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

t=coder.newtype('embedded.fi', numerictype,sz, variable_dims, Name,Value) では使用できません。

出力引数

すべて折りたたむ

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

制限

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

ヒント

  • 引数 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 で導入