2012-02-07 2 views
3

以前に保存したSimStateと異なる乱数シードを使用して複数のシミュレーションを実行する必要があるという問題があります。私はまだこれを動作させることはできませんでした。Simulinkで過去のSimStateを使用していても、カスタム乱数ジェネレータシードを設定する

私は

set_param('mod/Random Number', 'Seed', '3324') 

使用して試してみましたが、私が以前に保存したのSimState使用していないが、私はのSimStateでこれを試すとすぐにすべてのシミュレーションはまだ(同じ乱数で終わるならば、この作品私は、新しく設定されたシードが無視されているのではなく、SimStateで保存されたシードが使用されていると思いますが、私はSimStateデータ構造を見てみましたが、過去のシードも含まれているのか、私はそれを変更しようとしている方法をします)。

私の最善のアプローチは何ですか?理想的には、私は単純に単一の関数(shuffle_seeds)を呼び出し、すべてのランダムブロック内のすべてのシードを新しいものにリセットします。

メモ:私の一時的な解決策は、カスタム入力ポート(ルートレベル)を使用し、その入力にタイムステップごとに均一または正規分布の数値を与えることですが、これは非常に素晴らしい解決策ではありません1より小さいサンプリング時間が他のブロックで使用されている場合は、値が補間されるので機能します)。

+0

Matlabで乱数ジェネレータを定義する方法について助けが必要ですか? –

+0

いいえ、過去に保存されたSimState(過去のシミュレーション状態)を使用している間に、Simulink乱数ジェネレータのシードを変更する手助けが必要です。 – o1iver

答えて

1

"インラインパラメータ"がオンまたはオフになっていますか?オンにしている場合は、シードパラメータを調整可能なパラメータにすることができます。 documentationには、調整可能なパラメータに関する詳細があります。 Inline Parametersがオフの場合、私はそれについて肯定的ではありませんが、SimStateがSimStateに含まれないため、うまくいくと思います。

+0

ねえ。私はちょうどチェックし、 'インラインパラメータ'はオフです。私があなたを理解すれば、これは問題が他の何か正しいことを意味しますか? – o1iver

関連する問題