2011-09-13 32 views
2

Simulinkでmファイルを呼び出してモデルのブロックに配置するには(S関数を使用せずに)どうすればよいですか?誰かがアイデアを持っていますか?私は本当にそれを感謝します。Simulinkでmファイルを呼び出してモデルのブロックに配置するにはどうすればよいですか?

+1

私はこれが既に頼まれたと思います。http://stackoverflow.com/questions/2225248/matlab-convert-function-to-simulink-block – MikeT

答えて

6

ユーザ定義のMATLAB関数をSimulink信号に適用しようとする場合、目的に応じていくつかの方法があります。すべてのオプションは、SimulinkライブラリのUser-Defined Functionsセクションで利用できます。

  • 、あなたのモデルからコードを生成する場合はMATLAB functionブロックを使用してください。このブロックには制限があり、組み込みのMATLAB関数の全範囲は利用できません。

  • コード生成を気にしない場合は、Interpreted MATLAB functionブロックを使用してください。このブロックでは、どの機能も利用できます。

  • mファイルが簡単で入力に操作する単純な式が含まれている場合はFcnブロックを使用してください。この場合、式を直接ブロックダイアログに入力し、ドキュメントに示されているように入出力信号を参照することができます。

+0

いつS関数を使いますか?私は人々がそれらを使用することを知っていますが、彼らの利点は何ですか?ところで大きな写真をありがとう。 – KAE

+0

@KE。上記の方法のいずれかを使ってmファイルのS-functionを選択するかどうかはわかりません。しかし、もしあなたがC言語の関数を意味するならば、あなたはコード生成を扱っているときにそれらはほとんど便利です。その場合、必要に応じてシミュレーション動作をモデル化し、TLCで生成されたコードに入る部分を作成する非インラインS関数を作成します。また、シミュレーションとコード生成コードを共有するインラインS関数を作成することもできますが、これらは限られた使用方法であることがわかりました。また、C関数は、mファイルのS関数や上記のオプションよりも大幅に高速になります。 – Praetorian

+0

ありがとう!私はコードを生成しないので、他のオプションに固執します。 – KAE

0

MATLAB Fcnブロックは、M関数ファイルをSimulinkモデルに埋め込む最良のソリューションです。ただし、使用しているMATLABのバージョンに注意してください。たとえば、MATLAB Functionブロックの後のバージョンでは、%#codegenのM関数ファイルで実装でき、CコンパイラはMATLABパッケージにする必要があります。幸運

関連する問題