メモリ ブロックを介して CMEX S-Function に供給されるいくつかの入力を含むモデルがあり、S-Function はこれらの入力に基づいて出力を提供し、それらの入力は S-Function にフィードバックされます。古典的な代数ループのシナリオ。私たちのソルバーは通常可変時間ステップであるため、これを防ぐためにメモリ ブロックを使用していました。
Mathworks のドキュメントによると、Memory ブロックと Unit Delay ブロックも、出力に関してマイナー タイム ステップで固定されています。入力は離散でも連続でもかまいませんが、出力はメジャータイム ステップでのみ連続であり、マイナー タイム ステップでは固定されます。
ここで、さまざまな理由から、モデル内のすべてがマイナー タイム ステップとメジャー タイム ステップで更新されることが重要です。PWork ベクトルを使用して状態点の前の値を保存し、使用する CMEX S-Function に転送する方法を思いつきました。これにより、代数ループの発生が防止され、マイナー タイム ステップでの連続性も保証されますが、私が望むほどエレガントではありません。
誰か別の提案はありますか?
PS: 余談ですが、ソルバーが Fixed Step であるか Variable Step であるかに関係なく、Memory ブロックを使用する方が良いと思います。これは、内部的に Fixed Step ソルバーの Unit Delay ブロックになるためです。この仮定は正しいですか?