以下のような非常に長い関数の値を評価するために、simulink の matlab 関数ブロックを使用しようとしています (ただし、約 1.3 Mb )。
qdd24*((3*(cos(q22 + q23)*((7*sin(q25)*(sin(q21)*sin(q24) + cos(q22 + q23)*cos(q21)*cos(q24)))/125 + (7*sin(q22 + q23)*cos(q21)*cos(q25))/125) - sin(q22 + q23)*cos(q21)*((7*cos(q22 + q23)*cos(q25))/125 - (7*sin(q22 + q23)*cos(q24)*sin(q25))/125))*(cos(q05)*((26*cos(q21)*cos(q22))/125 - (49*cos(q21)*sin(q22))/1000) + cos(q05)*((507*cos(q21)*cos(q22))/1000 + (49*cos(q21)*sin(q22))/1000) + cos(q05)*((7*sin(q25)
...
ここでqij
qdij
、 とqddij
はブロックへの入力です。
しかし、シミュレーションの実行時にこのブロックを C コードに変換するのに時間がかかりすぎます (ほとんど応答しません)。これをより高速に評価する他の方法はありますか?
また、関数を作成してブロックを使用して呼び出してみましたinterpreted matlab function
が、「入力引数が不足しています」というエラーが発生しました。