バックグラウンド:
離散イベントシミュレーションMATLABモデルを継承しており、その実行を自動化して高速化したいと考えています。sim(modelName)を呼び出してMATLABにインタープリターされたコードを実行させるのではなく、system('modelName.exe ...')を呼び出すのと同じようなソリューションが必要です。これに対する私の動機は、ほぼ1000%の速度の増加を示唆する初期テストから来ています。RapidSimulationターゲットでReal-TimeWorkshopを使用して、静的メモリ割り当てのあるexeを作成することができました。問題は、モデルに埋め込まれたMATLAB関数ブロックがあり、実行ごとにパラメーターのサイズと形状が異なることです。そして、数千とは言わないまでも数百の実行があります。
MathWorksのドキュメントによると:
組み込みMATLAB関数ブロックではサポートされていない動的メモリ割り当て:
「EmbeddedMATLABFunctionブロックの可変サイズデータに動的メモリ割り当てを使用することはできません。無制限の可変サイズデータの代わりに制限付きを使用してください。」
質問:
この制限の潜在的な回避策は何でしょうか?
考え:
- 十分に大きい静的変数サイズを使用し、さらにint変数/調整可能なパラメーターを渡して、範囲を超えるデータの部分を明示的にウィンドウ化します。
- S-関数?
- 今日実装しているもの:静的コードを動的に生成するために呼び出されるたびに、プログラムでシミュレーションを再コンパイルします。
- すべてをPythonやC++などの実際の/最新のプログラミング言語に移植します。
キーワード: MATLAB動的メモリ割り当て組み込み離散イベントシミュレーションリアルタイムワークショップSimulinkSimEvents調整可能パラメーター