主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

MATLABファイル内でのプログラムによる入力プロパティの定義

コード生成の場合、MATLAB®関数断言を使用して、基本関数入力のプロパティを MATLABファイルに直接定義できます。

MATLAB编码器で 明确肯定を使用する方法

関数断言を使用して、基本関数入力のクラス、サイズ、実数/複素数を指定する標準の MATLAB関数を起動します。

関数断言を使用して入力プロパティを指定する場合は、以下のいずれかの方法を使用します。提供された正確な構文を使用し、それを変更しないでください。

任意クラスの指定

断言(isa (param, 'class_name'))

入力パラメーター参数を MATLABクラス类名に設定します。たとえば、入力Uのクラスを 32ビット符号付き整数に設定するには、次の関数を呼び出します。

... 断言(isa(U,'int32')。。。

fiクラスの指定

assert(isfi(param))assert(isa(param,'embedded.fi'))

入力パラメーター paramを MATLABクラスfi(定点设计师)(固定小数点数値オブジェクト)に設定します。たとえば,入力Uのクラスをfiに設定するには、次の関数を呼び出します。

...断言(isfi (U));...

または

…断言(isa(U,'embedded.fi')。。。

fiクラスとnumerictype(定点设计师)の両方を指定しなければなりません。固定小数点入力のnumerictypeの指定を参照してください。菲马斯(定点设计师)プロパティを設定することもできます (固定小数点入力のfimathの指定を参照)。菲马斯(定点设计师)プロパティを設定しない場合、编码基因はMATLABの既定の菲马斯値を使用します。

構造体クラスの指定

assert(isstruct(param))assert(isa(param,'struct'))

入力パラメーター参数を MATLABクラス结构体(構造体) に設定します。たとえば、入力Uのクラスを结构体に設定するには、次の関数を呼び出します。

... 断言(isstruct(U))。。。

または

…断言(isa(U,'结构')。。。

入力パラメーターのクラスを结构体に設定する場合は,プロパティが構造体定義に表示されるようにするために,すべてのフィールドのプロパティを指定しなければなりません。

单间牢房配列クラスの指定

assert(iscell(param))assert(isa(param,'cell'))

入力パラメーター参数を MATLABクラス细胞(细胞配列)に設定します。たとえば,入力Cのクラスを细胞に設定するには、次の関数を呼び出します。

...断言(iscell (C));...

または

…断言(isa(C,'单元')。。。

单间牢房配列の要素のプロパティを指定する方法については、细胞配列のプロパティの指定を参照してください。

固定サイズの指定

断言(all (size (param) == [dim])))

入力パラメーター参数を,次元昏暗で指定するサイズに設定します。たとえば、入力Uのサイズを 3.行 2.列の行列に設定するには、次の関数を呼び出します。

…断言(全部(大小(U)=[32])。。。

スカラーサイズの指定

Assert (isscalar (param)) Assert (all (size (param) == [1]))

入力パラメーター参数のサイズをスカラーに設定します。入力Uのサイズをスカラーに設定するには、次の関数を呼び出します。

...断言(isscalar (U));...
または
…断言(全部(大小(U)=[1])。。。

可変サイズの入力の上限の指定

assert (all(size(param)<=[N0 N1…]));assert (all(size(param)<[N0 N1…]));

入力パラメーター参数の各次元の上限サイズを設定します。入力Uの上限サイズが3行2列の行列以下になるように設定するには,次の関数を呼び出します。

断言((大小(U) < = 2 [3]));

メモ

变码器を使用して可変サイズの入力の上限を指定することもできます。

固定サイズおよび可変サイズの次元をもつ入力の指定

assert (all(size(param)>=[M0 M1…]));assert (all(size(param)<=[N0 N1…]));

断言(所有(大小(参数)> = (M0 M1…)))を使用して入力パラメーターの各次元の下限サイズを指定する場合、以下の条件があります。

  • 入力パラメーターの各次元の上限サイズも指定しなければならない。

  • 各次元Kの下限は上限Nk以下でなければならない。

  • 固定サイズの次元を指定するには,次元の下限と上限を同じ値に設定する。

  • 制限は非負でなければならない。

入力Uの最初の次元のサイズを 3.に固定し、2.番目の次元を上限 2.の可変サイズに設定するには、次の関数を呼び出します。

断言(全部(大小(U)>=[3 0]);断言(全部(大小(U)<=[3 2]));

個々の次元のサイズの指定

断言(大小(参数,K) = =Nk);断言(大小(参数,K) < =Nk);断言(大小(参数,K) <Nk);

個々の次元およびすべての次元を同時に指定できます。すべての次元を同時に指定せずに、個々の次元を指定することもできます。以下のルールが適用されます。

  • 少なくとも1回は各次元のサイズを指定しなければならない。

  • 最後の次元の指定が前の指定より優先される。

入力パラメーター参数の次元Kの上限サイズを設定します。入力Uの最初の次元の上限サイズを 3.に設定するには、次の関数を呼び出します。

断言(大小(U, 1) < = 3)

入力Uの 2.番目の次元のサイズを 2.に固定するには、次の関数を呼び出します。

断言(大小(U, 2) = = 2)

実数入力の指定

断言(isreal(param))

入力パラメーター参数が実数であることを指定します。入力Uが実数であることを指定するには、次の関数を呼び出します。

...断言(伊斯雷尔(U));...

複素数入力の指定

断言(~isreal(param))

入力パラメーター参数が複素数であることを指定します。入力Uが複素数であることを指定するには,次の関数を呼び出します。

...断言(~伊斯雷尔(U));...

固定小数点入力のnumerictypeの指定

断言(isequal (numerictype (fiparam), T))

fi入力パラメーターfiparamnumerictypeプロパティを、numerictype(定点设计师)オブジェクトTに設定します。たとえば、固定小数点入力Unumerictypeプロパティを、32ビット ワード長および 30ビット小数部長をもつ符号付きのnumerictypeオブジェクトTとして指定するには、次のコードを使用します。

%#codegen…%定义numerictype对象。T=numerictype(1,32,30);%将输入U的numerictype属性设置为T。断言(isequal(numerictype(U,T))。。。

変数にnumerictypeを指定しても,変数が固定小数点であることは自動的に指定されません。fiクラスとnumerictypeの両方を指定しなければなりません。

固定小数点入力のfimathの指定

assert (isequal (fimath (fiparam), F))

fi入力パラメーターfiparam菲马斯プロパティを、菲马斯(定点设计师)オブジェクトFに設定します。たとえば、固定小数点入力Uが整数オーバーフローで飽和するようにその菲马斯プロパティを指定するには、次のコードを使用します。

% # codegen…定义fimath对象。F = fimath(“OverflowMode”、“饱和”);%设置输入U的fimath属性为F。assert(isequal(fimath_u),F));...
断言を使用して菲马斯プロパティを設定しない場合、编码基因はMATLABの既定の菲马斯値を使用します。

入力の複数プロパティの指定

断言(function1(params)&&function2(params)&&function3(params)&&……)

単独の関数断言呼び出しを使用して1つ以上の入力のクラス,サイズ,実数/複素数を指定します。たとえば次のコードは,入力Uが 双重的複素数、3.行 3.列の行列で、入力vが16ビット符号なしの整数であることを指定します。

% # codegen…断言(isa (U,“双”)& & ~伊斯雷尔(U) & &(大小(U) = = 3 [3]) & & isa (V, ' uint16 '));...

関数 明确肯定の使用規則

関数断言を使用して基本関数入力のプロパティを指定するときは、次の規則に従います。

  • 基本関数の開始時に、如果ステートメントやサブルーチンの呼び出しなどのフロー制御操作を行う前に、関数断言を呼び出します。

  • 如果对于开关ステートメントなどの条件構造内では,関数断言を呼び出さないでください。

  • 固定小数点入力の場合は、fiクラスとnumerictype(定点设计师)の両方を指定しなければなりません。固定小数点入力のnumerictypeの指定を参照してください。菲马斯(定点设计师)プロパティも設定できます。固定小数点入力のfimathの指定を参照してください。菲马斯(定点设计师)プロパティを設定しない場合、编码基因はMATLABの既定の菲马斯値を使用します。

  • 入力パラメーターのクラスを结构体に設定する場合は、構造体定義に表示されるようにするために、すべてのフィールドのクラス、サイズおよび実数/複素数を指定しなければなりません。

  • 断言(所有(大小(参数)> = (M0 M1…)))を使用して入力パラメーターの各次元の下限サイズを指定する場合、以下の条件があります。

    • 入力パラメーターの各次元の上限サイズも指定しなければならない。

    • 各次元Kの下限は上限Nk以下でなければならない。

    • 固定サイズの次元を指定するには,次元の下限と上限を同じ値に設定する。

    • 制限は非負でなければならない。

  • 個々の次元を指定する場合は,以下の規則が適用されます。

    • 少なくとも1回は各次元のサイズを指定しなければならない。

    • 最後の次元の指定が前の指定より優先される。

基本入力の一般的なプロパティの指定

次のコード例では,基本MATLAB関数微光谱图は2つの入力,pennywhistle赢得を取ります。コードではこれらの入力に対して次のプロパティを指定します。

入力 プロパティ
pennywhistle クラス int16
サイズ 220,500 行 1.列のベクトル
実数/複素数 真正的(既定値)
赢得 クラス
サイズ 1024行1列のベクトル
実数/複素数 真正的(既定値)

%#codegen函数y = McSpecgram (pennywhistle,win) nx = 220500;nfft = 1024;断言(isa (pennywhistle int16));Assert (all(size(pennywhistle) == [nx 1]));断言(isa(赢,“双”));Assert (all(size(win) == [nfft 1]));...

また、断言コマンド内の1つ以上の入力に対し,プロパティの指定を組み合わせることもできます。

%#codegen函数y=mcspecgram(pennywhistle,win)nx=220500;nfft=1024;断言(isa(pennywhistle,'int16')&all(size(pennywhistle)==nx1]);断言(isa(赢,'double')&&all(大小(赢)=[nfft 1])。。。

基本固定小数点入力のプロパティの指定

固定小数点入力を指定するには,定点设计师™ソフトウェアをインストールしなければなりません。

以下の例では、基本 MATLAB関数mcsqrtfiは1つの固定小数点入力xを取ります。コードではこの入力に対して次のプロパティを指定します。

プロパティ
クラス fi
numerictype numerictypeオブジェクトT(基本関数内で指定)
菲马斯 菲马斯オブジェクトF(基本関数内で指定)
サイズ 标量
実数/複素数 真正的(既定値)

函数y=mcsqrtfi(x)%#codegen T=numerictype('WordLength',32,'FractionLength',23,'Signed',true);F=fimath('SumMode','SpecifyPrecision','SumWordLength',32,'SumFractionLength',23,'ProductMode',SpecifyPrecision',32,'ProductFractionLength',23);assert(isfi(x));assert(isqual(numerictype(x),T));assert(等质量(fimath(x),F));y=sqrt(x);

fiクラスとnumerictypeの両方を指定しなければなりません。

细胞配列のプロパティの指定

クラス细胞(细胞配列)を指定するには,以下のいずれかの構文を使用します。

assert(iscell(param))assert(isa(param,'cell'))

たとえば,入力Cのクラスを细胞に設定するには,次を使用します。

...断言(iscell (C));...

または

…断言(isa(C,'单元')。。。

细胞配列のサイズと细胞配列要素のプロパティを指定することもできます。指定する要素の数で,细胞配列が同種か異種混合かが決まります。单间牢房配列のコード生成を参照してください。

最初の要素のみプロパティを指定すると,细胞配列は同種になります。たとえば,以下のコードは,Cが 1.行 1.列の 双重的の要素をもつ 1.行 3.列の同種 单间牢房配列であることを指定します。

...断言(isa (C,“细胞”));assert(all(size(C) == [1 3]));断言(isa (C{1},“双”));...

最初の要素のプロパティのみ指定する場合でも、構造体の型の名前を 单间牢房配列に割り当てると、单间牢房配列は異種混合になります。各要素には最初の要素のプロパティが含まれます。たとえば、以下のコードは、Cが 1.行 3.列の異種混合 单间牢房配列であることを指定します。各要素は 1.行 1.列の 双重的です。

…assert(isa(C,'cell');assert(all(size(C)=[13]);assert(isa(C{1},'double'));coder.cstructname(C,'myname')。。。

各要素のプロパティを指定すると、单间牢房配列は異種混合になります。たとえば、以下のコードは、最初の要素が 1.行 1.列の 烧焦で、2.番目の要素が 1.行 3.列の 双重的である、1.行 2.列の異種混合 单间牢房配列であることを指定します。

…断言(isa(C,'cell');断言(all(size(C)=[12]);断言(isa(C{1},'char'));断言(all(size(C{2})=[13]);断言(isa(C{2},'double'))。。。

1つを超える要素を指定する場合,すべての要素のプロパティが同じであっても细胞配列が可変サイズであることを指定できません。たとえば,以下のコードは可変サイズの细胞配列を指定します。このコードでは,最初の要素と2番目の要素のプロパティを指定しているため,コード生成は失敗します。

...断言(isa (C,“细胞”));assert(all(size(C) <= [1 2]));断言(isa (C{1},“双”));断言(isa (C{2},“双”));...

前の例では,最初の要素のみを指定すると,细胞配列が可変サイズであることを指定できます。以下に例を示します。

…断言(isa(C,'cell');断言(all(size(C)<=[12]));断言(isa(C{1},'double'))。。。

スカラー構造体のクラスとサイズの指定

sを次のスカラー MATLAB構造体として定義しているとします。

S =结构(“r”、双(1),“我”,int8 (4));
以下のコードは,関数入力sとそのフィールドのプロパティを指定します。
函数y=fcn(S)%#codegen%将输入的类指定为struct。断言(isstruct);%按定义顺序指定字段r和i%的类别和大小。断言(isa(S.r,'double');断言(isa(S.i,'int8')。。。

ほとんどの場合、プロパティに対して明示的に値が指定されていないときは、MATLAB编码器™では,構造体フィールドを除き,既定値が使用されます。構造体内のフィールドに名前を付けるには,そのプロパティの少なくとも1つを設定することが唯一の方法です。最低限,構造体フィールドのクラスを指定しなければなりません。

構造体配列のクラスとサイズの指定

構造体配列の場合は,各フィールドのプロパティを指定するために配列の代表的な要素を選択しなければなりません。たとえば,sを次のような1行2列の配列のMATLAB構造体として定義してあるとします。

S =结构(‘r’,{双(1)双(2)},‘我’,{int8 (4), int8 (5)});

以下のコードは,配列の最初の要素を使用して構造体入力sの各フィールドのクラスとサイズを指定します。

%#codegen function y = fcn(S) %指定输入S的类为struct。断言(isstruct (S));%根据数组的第一个元素指定字段r和i %的大小。assert(all(size(S) == [1 2]));断言(isa (S (1) r '双层'));断言(isa (S(1)我,' int8 '));
構造体内のフィールドに名前を付けるには、そのプロパティの少なくとも 1.つを設定することが唯一の方法です。最低限、すべてのフィールドのクラスを指定しなければなりません。