パラメーターの構造体を 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;
また、
しかし、私はこのエラーが発生します:
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
構造体からパラメーターを取得しようとするだけです。