即使在Simulink中使用过去的SimState,也可以设置自定义随机数生成器种子

时间:2012-02-07 13:38:38

标签: matlab simulink

我有一个问题,我需要使用先前保存的具有不同随机种子的SimState运行多个模拟。我还没有设法让它工作。

我尝试过使用

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

如果我不使用以前保存的SimState,这是有效的,但是当我用SimState尝试这个时,所有模拟仍然会得到相同的随机数(我猜新设置的种子被忽略了,而是正在使用保存在SimState中的种子,虽然我已经尝试查看SimState数据结构,但我无法弄清楚它是否包含过去的种子以及它是否应该如何改变它。

这里最好的方法是什么?理想情况下,我只需调用一个函数(shuffle_seeds),所有随机块中的所有种子都将重置为新的。

注意:我的临时解决方案是使用自定义输入端口(在根级别),然后为每个时间步长提供均匀或正常分布的数字输入,但这不是一个非常好的解决方案(并且非常棘手)如果在任何其他块中使用小于1的采样时间,则插入值。

1 个答案:

答案 0 :(得分:1)

您是否打开或关闭了“内联参数”?如果已打开它,则可以尝试使种子参数成为可调参数。 documentation中有关于可调参数的更多信息。如果内联参数关闭,我认为它会起作用,因为SimState不会在SimState中,尽管我对此并不乐观。