4

Simulink モデル内で Matlab 関数を使用すると、そのパフォーマンスに深刻な影響を与える可能性があることを読みました。Interpreted MATLAB Function ブロックの代わりにMATLAB Functionブロックを使用することをお勧めします。

xPC ターゲット マシンで使用するためにモデルを C にコンパイルするときに、これがどのように適用されるかは明確ではありません。M スクリプトが原因で、なんらかのペナルティを受けるのでしょうか?それとも、同じ問題を解決するために通常の Simulink ブロックを使用したほうがよいのでしょうか?

4

2 に答える 2

3

MATLAB Function ブロックの使用によるペナルティはありません。モデルをコンパイルするとき、MATLAB Function ブロックはその MATLAB コードを他の Simulink ブロックと同様に C にコンパイルします。

問題をモデル化するための最良の方法に基づいて選択します。たとえば、アルゴリズムに必要な制御フロー ステートメントやループが多すぎる場合は、MATLAB Function ブロックでコーディングする方が簡単です。常に両方を混在させることができます。

于 2013-03-06T16:34:02.887 に答える
2

あなたが提供するリンクは、「Simulinkモデル内でMatlab関数を使用すると、そのパフォーマンスに深刻な影響を与える可能性がある」ことを実際に言ったり暗示したりするものではありません. 場合によっては可能ですが、多くの場合、組み込みブロックと同じくらい高速です。

Interpreted MATLAB Function ブロックは、評価が必要になるたびに (つまり、すべてのタイム ステップで) MATLAB を呼び出します。これにより (他の手法に比べて) 速度が低下し、c コード生成の目的 (つまり、xPC で使用される Simulink Coder) での使用も妨げられます。

coder.extrinsic として定義された関数を使用する MATLAB Function ブロック内の m コードは、上記と同じ制限を受け、遅くなる可能性があります。

Embedded NATLAB サブセット内にある MATLAB Function ブロック内の m コード (つまり、単純な数学および行列操作) は、C コードに変換され、コンパイルされます (シミュレーションを使用する場合、および C コード生成で使用される場合)。シミュレーションとコード生成では、標準ブロックを使用した場合と同様のパフォーマンスが得られるはずです。

フィル。

于 2013-03-06T17:51:53.263 に答える