matlab函数ブロックをモデル用行优先コードの生成生成
プログラミング言语は,すべてのに対して単一の配列レイアウトを想定ししますますますmatlab®fortranは,で列优先のをしますが,,,,c ++ははは优先ののをを使用使用使用金宝app®CODER™C/C ++コードコードコードコードコードををををを生成ます。。。。。
行优先コード生成详细については,行列および配列コード生成を参照しください。
MATLAB功能simulink simulinkモデルモ金宝appデルモデルモデルモデルカスタムを定义定义ようようににしします行行优先ののデータデータまたはまたは列列列MATLAB功能ブロックをについて行のコードをでき。。。MATLAB功能ブロックの详细は,金宝appsimulinkででmatlab函数ブロックブロック使用したたたた关数关数关数の実装を参照しください。
既定で,ジェネレーター列优先のコードc/c/c ++コードコードの,,,,,,[配列の]モデルパラメーター使用ことで配列のをモデルで指定できます。。ををを[行]
に设定,で行优先の生成有效になりますモデル内のMATLAB功能ブロックでの生成を有效にに,ブロック内のレベルで关数Coder.Rowmajor
を使用し。
行优先の生成
一部アルゴリズム,行优先のレイアウト方がアクセスのが向上向上向上しますますます。。行优先优先の配列配列レイアウトレイアウトをするするモデルのコードコードMATLAB功能ブロックがにれる场合,效率コードが得られ。。
モデル例
EX_ROW_MAJOR_MLFB
について考えます。このモデルに,
[5 4]
constantブロックブロックブロックれます。を指定するため,,,,[定数]を以下设定します。重塑(1:20,5,4)
[5 4]
行列をし。行列指定するため,[端子の]を[5 4]
に设定し。[コンフィギュレーション]ダイアログダイアログで,[配列の]を
[行]
に设定し。行列加算の关数
AddMatrix
を记述ます特に指定ていない限り,MATLAB功能ブロックは,コンフィギュレーションパラメーター[配列の]から配列レイアウト设定継承します。オプションで,
Coder.Rowmajor
を使用し,MATLAB功能ブロックのレイアウト行优先のレイアウト的に设定でき。。功能s = addmatrix(a,b)s = zeros(size(a));为了行= 1:大小(a,1)为了col = 1:size(a,2)s(行,col)= a(行,col) + b(行,col);结尾结尾
モデルのを生成し。。[Cコード]タブで[ビルド]をクリックし。
コードジェネレーター,ののコードを生成ます。。
for(b_row = 0; b_row <5; b_row ++){for(b_col = 0; b_col <4; b_col ++){rtb_s_tmp =(b_row << 2)+b_col;rtb_s [rtb_s_tmp] = EX_ROW_MAJOR_MLFB_P.CONSTANT_VALUE [RTB_S_S_TMP] + EX_ROW_MAJOR_MAJOR_MLFB_U.INPORT1 [RTB_SS_S_TMP];}}}
为了
ループ22つあります1つ目1为了
ループはにアクセスし,,つ目つ目つ目の为了
ループはにアクセスし。。MATLAB功能ブロックとのレイアウト同一の転置やが必要ないためため,生成されれたコードはは效率效率效率。
优先形式混在コード生成
行优先データ扱うと,列のデータを扱うMATLAB功能ブロックが,形式混在のコード生成できます。列优先のレイアウトレイアウトレイアウトをを使用使用使用使用するののコードコードをををを生成生成生成生成生成生成するするするするときときとき,,そのそのそのそのモデルモデルモデルににに行行优先优先のレイアウト必要応じブロック入力データを行优先変换,,データをを列列优先优先优先データデータに再再変换します。。列优先优先ののデータをMATLAB功能ブロックが场合优先形式混在のを生成できます。
配列レイアウト変换パフォーマンスに影响をことがあります。
モデル例
EX_ROW_MAJOR_MLFB
を考え。例の详细について,,行优先の生成を参照しください。[コンフィギュレーション]ダイアログダイアログで,[配列の]を
[行]
に设定し。关数
Coder.Columnmajor
を使用し,MATLAB功能ブロックの关数AddMatrix
を列のデータ更新します。功能s = addmatrix(a,b)coder.columnmajor;s =零(size(a));为了行= 1:大小(a,1)为了col = 1:size(a,2)s(行,col)= a(行,col) + b(行,col);结尾结尾
モデルのを生成し。。[Cコード]タブで[ビルド]をクリックし。
コードジェネレーター,ののコードを生成ます。。
for(b_row = 0; b_row <4; b_row ++){for(b_col = 0; b_col <5; b_col ++){b_tmp =(b_col << 2)+b_row;b_tmp_0 = b_col + 5 * b_row;B [B_TMP_0] = EX_ROW_MAJOR_MLFB_19B_U.INPORT1 [B_TMP];A [B_TMP_0] = EX_ROW_MAJOR_MLFB_19B_P.CONSTANT_VALUE [B_TMP];}} for(b_row = 0; b_row <5; b_row ++){/ * outport:'/outport' */for(b_col = 0; b_col <4; b_col <4; b_col ++){b_tmp = 5 * b_col+b_col+b_row; b_col+b_row;ex_row_major_mlfb_19b_y.outport [b_col +(b_row << 2)] = a [b_tmp] + b [b_tmp];}