Cコードへのモデルエクスポート

Cコードへのエクスポート

エクスポートを実行すると、モデル固有の*.cファイルに加え、出力タイプに応じて以下のファイルが生成されます:

タイプ

生成されるサンプルファイル

用途

Model Prediction (Basic)

mexPredict.c

MATLAB MEXファイルの生成

slPredict.c

Sファンクションの生成

Model Prediction and Gradient

mexPredictGrad.c

MATLAB MEXファイルの生成

MEXファイル

MEXファイルは、エクスポートされたASCMO-STATICモデルから、MATLAB®で以下のようにして生成することができます:

コピー
MEXファイルの生成
mex mexPredict.c -DNUMINPUTs=<n_outputs> -DCALLFUNC=predict_<output> -output predict_<output>

<n_outputs> = 出力の数

これにより、predict_<output>Matlab.mexw64というファイルが生成され、MATLAB®から以下のように呼び出すことができます。

コピー
MEXファイルの呼び出し
>> predict_<output>([1.1 2.2 3.3 ...])

[1.1 2.2 3.3 ...]= n_inputsの要素

この結果は以下のようになります:

ans = 23.32343

Sファンクション

エクスポートされたASCMO-STATICモデル用のSファンクションは、MATLAB®で以下のようにして生成することができます。

コピー
Sファンクションの生成
mex slPredict.c -DNUMINPUTS=<n_inputs> -DCALLFUNC=predict_<output> -output predict_<output>

<n_inputs> = 入力の数

これにより、predict_<output>Simulink.mexw64というファイルが生成されます。

エクスポートされたファイルpredict_<output>.cのフォーマット(3つの有効な入力を持つモデル)

#include <math.h>

void predict_Fuel_mass(double* pInArray, double* pOutPrediction)

{

[...]

}

上記の例は以下のように使用できます。

extern predict_Fuel_mass(double*, double*);

double modelInput[3];

double modelOutput;

modelInput[0] = 1.1;

modelInput[1] = 2.2;

modelInput[2] = 3.3;

predict_Fuel_mass(modelInput, modelOutput);

ここで、modelOutput変数には入力ベクトル[1.1, 2.2, 3.3]用のモデル予測が格納されます。