0

パラメーターの構造体を MATLAB の S-Function に渡そうとしています。たくさんのパラメーターがあり、次のように渡すのは避けたいです。

% MATLAB S-Function 構文の一般的な形式は次のとおりです。 % [SYS,X0,STR,TS,SIMSTATECOMPLIANCE] = SFUNC(T,X,U,FLAG,P1,...,Pn)

すべてのパラメーターを含む単一の構造体を渡すことをお勧めします。モデル ワークスペースに次のようにデータをロードしました。 ここに画像の説明を入力

最初に試しました(Philへの返信で):

関数 [sys,x0,str,ts,simStateCompliance]=system1(t,x,u,flag,DATA_HMMWV)

size.NumInputs = 2;

また、

Simulink は次のようになります。

しかし、私はこのエラーが発生します:

ここに画像の説明を入力

Phil、これが S-Function に別の入力ポートを追加しようとした理由です。そこに入れなければならないと思ったのです。

私も試しました:sizes.NumInputs = 1;

そして、私はこのエラーを受け取ります: ここに画像の説明を入力

また、DATA_HMMWV がパラメーターであることは確かですか? このウィンドウの Param とは少し異なります。 ここに画像の説明を入力

新しい:::: 2016 年 1 月 25 日

フィル、問題は私の派生関数ではありません。問題は、構造を関数にまだ渡していないことです。ここに写真があります。データはモデル ワークスペースにあり、それ (DATA_HMMWV) を関数に渡しましたが、13 行目 (デバッグ モード) でシミュレーションを停止すると、DATA_HMMWV は関数ワークスペースにありません。

ここに画像の説明を入力

コードが続く場合 (フラグ = 1 まで)、次のようになります。 ここに画像の説明を入力

コードが引き続き実行されると、次のエラーでクラッシュします。 ここに画像の説明を入力

そのため、関数に渡された入力引数が十分ではありませんでした。また、関数は非常に単純です。

% function sys = mdlDerivatives(t,x,u,DATA_HMMWV)

sys = DATA_HMMWV.g;

% end mdlDerivatives

構造体からパラメーターを取得しようとするだけです。

4

1 に答える 1