加工(ホイールセットの移動)をしています。ホイールセットには質量があり、変数であり、init.m
ファイルで宣言しています (例M=1;
)
このプロセスでは、ホイールセットの質量が 2 秒ごとに変更されるようにしたいと考えています。質量の新しい値を Simulink から M 変数に保存する方法は?
Random Numberブロックのようなものを使用して、これらの値を生成できますか?平均と分散を与えることができます。
これがうまくいかない場合、次に簡単な方法は、MATLABで記述されたS関数またはMATLAB関数ブロックのいずれかを使用することです。関数は各タイムステップで呼び出され、任意のMATLABコードを実行して出力の次の値を計算できます。
私にとって、私は決定を見つけました。
M
オブジェクトの質量を格納するために変数を使用しました。そして、simulink から関数呼び出しで M を呼び出しました。例えば:
MATLAB Function
しかし、ブロック
内で関数 Rho を呼び出すと、次のようになります。
このアプローチは、M が静的な場合にのみ機能します。今、私は時間の中でダイナミックに変化したいと思ってM
います。M
それで、まず、グローバルにして変更できると決めました。M
関数を作成し、新しい値を計算してグローバルM
変数に設定する関数ブロックを作成しました。しかし、うまくいきませんでした。Simulink で 1 つのグローバル変数を同時に使用および変更することはできません。
そこで、アプローチ全体を変更することにしました。M
静的パラメーターではなくなったので、シグナルとして作成する必要がありますM
。したがって、次のようになります。
ここで、ブロックConstant
M
はワークスペース (またはいくつかの init.m ファイル) から取得され、SimulinkM
はワークスペースからの変数ではなく、ローカル信号で動作します。M
変数をワークスペースに保存し、ワークスペースで変更してシミュレーションに戻すよりも良い解決策 (これが許可されているかどうかはわかりません) は、シミュレーション自体で変数を変更してその変数を使用することです。あなたの問題をよりよく説明していただければ、もっとお手伝いできるかもしれません。