simulink プロジェクトをスピードアップしようとしていますが、アクセラレータ シミュレーション モードを使用したいと考えています。
私のプロジェクトの目的は、循環プロセスを制御することであり、次のように構成されています。
- すべてのパラメーターと、パラメーター推定によるフィードフォワード制御が実装されている matlab-script。また、反復ごとに simulink モデルのシミュレーションを開始します。
- 動的システムとフィードフォワード制御 (基本的にはルックアップ テーブル) がフィードバック制御と共に実装されている simulink モデル。すべてのブロックのパラメーターは、スクリプトによって生成されたワークスペース変数/構造体によって設定されます。
フィードフォワード制御変数が計算され、各シミュレーション パスの後にシミュレートされたデータからパラメーターが推定されます。その後、モデルが再びシミュレートされます。モデルは反復中に変更されていませんが、それでもサイクルごとにコンパイルされています。最初から:このソリューションはアクセラレータ モードを使用するのに適していますか?
私はこれらの提案された手順に従って、反復ごとにビルドされる理由を判断しようとしました: mathworks
Accelerator-Mode で実行すると (この関数のドキュメントを参照すると、シミュレーション用にコンパイルされるようになりました)、反復ごとにコンパイルされる理由を再現できません。
csdet1.ContentsChecksum.Value ~= csdet2.ContentsChecksum.Value
は true ですが、提案されたコードでは詳細が見つかりません。
csdet1.InterfaceChecksum.Value ~= csdet2.InterfaceChecksum.Value
も真であり、提案されたコードの出力は
UserDefinedTypesChecksum
異なります。これはどういう意味で、どうすれば解決できますか?
副作用: モデルを Simulink で開き、Normal-Mode を選択して Simulink.BlockDiagram.getChecksum() を実行すると、次のエラーが発生します。
このチャート chartname に継続的な更新が指定されています。これは RTW ではサポートされていません。"
しかし、このチャートは Stateflow チャートではなく、Matlab-Function ブロックですか?!