2012-02-29 10 views
2
を供給

私は、次のSimulinkモデルを持っている:MATLAB/Simulinkは - プログラム的に、複数の外部入力

Observer/controller Simulink model

私は、外部すなわち入力 u[k]y[k]を提供したいと思います

、私は、MATLABコマンドラインを介してシミュレーションを実行します。私はfound previously [LoadExternalInputとExternalInput] [3]オプションを設定することができ、それらはデフォルトでベクトル[t u]に設定されています。

しかし、私のu[k]y[k]はベクトルであり、それが唯一ベクトルを指定することができますExternalInputのように見えます。したがって、[t u]の各行は、時刻tのベクトルu全体の値になります。

私のモデルのu[k]y[k]のサイズは、必ずしも前もって知られているわけではありません。これらのベクトルを(おそらく構造体として)渡す方法はありますか?私は

sim('myModel', 'LoadExternalInput', 'on', 'ExternalInput', 'u, y'); 
uyはフィールド timesignals.values持つ構造である

、およびsignals.dimensionsのような何かができることを発見しましたImporting Data to Root-Level Input Portsから

答えて

2

signals.valuesの各行は、timeのn要素に対応するベクトルである。 signals.dimensionsのサイズはsignals.valuesです。私は手動でu.signals.valuesと同じ次元を期待するのIn1ポートを設定する必要があります(プログラム的に手の前にそれを行うだけでなく、私は当然のことができます。):

注意をあなたがのポート寸法パラメータを設定する必要がありますInportまたはTriggerブロックは、対応する入力構造のdimensionsフィールドと同じ値になります。値が異なる場合、モデルをシミュレートしようとするとエラーメッセージが表示されます。

"Importing Data Structures to a Root-Level Input Port"から)

私は手動でとにかくIn1をブロック上の寸法を設定する必要がある場合signals.dimensionsを設定する点は何ですか?とにかく私はこれをどうすればいいのでしょうか:シミュレーションを実行する前にuyを調べて、その長さのベクトルが予想されるようにInblockプロパティを設定します。

私はまだこれのためのより洗練されたソリューションが欲しいです。