主要内容

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

入力としてのエントリポイント関数出力の受け渡し

複数のエントリポイント関数のコードを生成するには、各関数の入力の型を指定しなければなりません。编码输出类型を使用して、1.つの関数の出力の型を別の関数の入力の型として渡すことができます。たとえば、関数foo1からの 2.番目の出力の型を関数食物2への入力型として使用するには、次のように入力します。

编码基因foo1-args{7, 42}食物2-args{coder.OutputType('foo1',2)}

また、编码输出类型を使用して、コード ベースを分割、コンポーネント化、または拡張するプロセスを容易にすることもできます。たとえば、MATLAB®コードで複雑な集約データ型が使用されているか、受け入れている場合、そのデータ型を作成する別々のコンストラクター関数の作成を検討してください。次に、コンストラクターからの出力型を他のエントリポイント関数に渡す编码输出类型を使用して、複数のエントリポイント関数のコードを生成します。

複数のエントリポイント関数の使用の詳細については、複数のエントリポイント関数のためのコード生成を参照してください。

エントリポイント関数の出力を別のエントリポイント関数への入力として渡す

関数编码输出类型は、同じデータ型を使用するエントリポイント関数を連結する方法を提供します。编码输出类型を使用して次を行います。

  • 入力の型指定プロセスを簡略化する。既存のエントリポイント関数がデータ型を作成または定義するときに、その定義を別のエントリポイント関数への入力に再利用できます。

  • エントリポイント関数間でデータを同期および調整する。编码输出类型を使用してデータ型を渡す場合、型定義には単一のソースしかなく、その定義は両方の関数によって使用されます。

これらのメリットを理解するために、编码输出类型を使用する場合と、使用しない場合の 2.つのコード生成を比較します。

例: 入れ子にされた構造体の出力型を入力型として再利用

コード ベースにとって重要な、複雑なデータ型があるとします。入力、出力、および内部計算でこのデータ型に依存している複数のエントリポイント関数があります。同じ型定義を使用するには、生成された関数コード間のインターフェイスが必要です。

この例の目的上、データ型は入れ子にされた構造体であり、可変サイズの配列が最下位のレベルのプロパティに格納されているとします。生成されたコードのこの構造体型蠕动に名前を付けます。MATLABで、菌器と呼ばれるデータ型の構成関数を記述します。

作用[out]=myConstructor(a,b)%创建上限为100×100的可变大小数组变码器('myStruct.f1.f2.f3.f4', [100 100], [1 1]);%定义嵌套结构类型myStruct=struct(“f1”,结构(‘f2’,结构(“f3”,结构(“f4”,零(a,b));%指定结构的名称及其一个字段编码器.cstructname(myStruct.f1.f2.f3,“蠕动”f3); 编码者名称(myStruct,“蠕动”); out=myStruct;

2.番目の関数使用构造函数を記述します。この関数は、蠕动型を入力として取り、加算を実行し、データの最後に追加列をプッシュします。

作用x=useConstructor(x,n)xz=x.f1.f2.f3.f4;b=0(大小(xz,1),1);对于i=1:nxz=[(xz+pi),b];终止x、 f1.f2.f3.f4=xz;

myConstructorおよび使用构造函数用のコードを生成し、それらを複数のエントリポイント関数として扱うには、両方の関数の入力型を指定しなければなりません。2.つの整数を使用して、myConstructorの入力型を指定します。使用构造函数の場合、编码输出类型を使用して入力型をmyConstructorからの出力型として指定します。

v =编码器。OutputType (“myConstructor”); 编码基因myConstructor-args{5,1}使用构造函数-args{v,3}-报告-配置:lib

生成されたコードでは、関数インターフェイスが合わせられています。2.つのエントリポイント関数は、蠕动に対して同じ型定義を使用します。コンストラクターの生成コードを使用して、使用构造函数の生成コードの入力型を作成できます。

例:编码输出类型を使用せずに入力型を手動で定義

编码输出类型を使用せずに使用构造函数の入力型を定義する場合は、编码员および编码器。StructTypeクラスのプロパティを使用して入力型を指定しなければなりません。

%squiggle的MATLAB类型定义myStruct=struct(“f1”,结构(‘f2’,结构(“f3”,结构(“f4”, 0 (2)))));t = coder.typeof (myStruct);t.Fields.f1.Fields.f2.Fields.f3.Fields。F4 = code .typeof(zeros(2), [100 100], [1 1]);t.Fields.f1.Fields.f2.Fields.f3。TypeName =“蠕动”f3;t.TypeName =“蠕动”

スタティック ライブラリ コードを生成するには、次を入力します。

编码基因myConstructor-args{5,1}使用构造函数-args{t,3}-报告-配置:lib

最初の例と同じように,関数インターフェイスが合わせられます。ただし,蠕动の型定義を作成および維持することは非常に労力を要します。型定義に対して行う変更は、2.つの場所、つまり関数myConstructorと現在のワークスペース変数Tで複製されなければなりません。これらの変更は、特に複雑な型定義を使用している場合に、同期がとれなくなる可能性があります。编码输出类型を使用して開発プロセスをサポートします。

编码输出类型を使用してコードのコンポーネント化を容易にする

MATLABコードが,大きく,複雑な,または集約型の定義を使用する場合,コードを別のエントリポイント関数のコンポーネント(コンストラクターや演算子など)に分割し,编码输出类型を使用してそれらの間で型定義を渡すことができます。関数编码输出类型を使用すると,さまざまなエントリポイント関数間で必ずインターフェイスを一致させることができます。

例: コンストラクターを作成し、编码输出类型を使用して出力型を渡す

スパース行列入力に対して演算を実行する関数使用稀疏について考えます。

作用out=useSparse(in)%#编码基因out=in*2;

使用稀疏のコードを生成する場合、適切な入力型を C/C++で手動で作成しなければなりません。型の構築を自動化および簡略化するには、スパース行列用のコンストラクターを記述します。

作用A=使稀疏(i,j,v,m,n)%#编码基因A=稀疏(i,j,v,m,n);

コードを生成するには、编码输出类型を使用してコンストラクターからの出力を使用稀疏への入力として渡します。入力引数を3行5列の行列として定義します。

t=编码器输出类型(“使稀疏”); S=圆形(兰特(3,5));[m,n]=尺寸(S);[i,j,v]=发现;i=编码器类型(i[inf 1]);%允许非零条目的数量变化编码基因使稀疏-args{i,i,i,m,n}使用稀疏-args{t}-报告

生成された C/C++コードを使用して、使稀疏を呼び出して使用稀疏への入力を生成できます。関数编码输出类型を使用すると、共通のコード ベースに属する別々のエントリポイント関数のインターフェイスを簡単に作成し、合わせることができます。

参考

||||

関連するトピック