奇怪的matlab行为

时间:2011-06-27 15:28:17

标签: matlab

我有一个确定性的matlab函数。我在我们的数据上运行它,并得到答案。现在如果我再次重复这个,在同一组数据上运行相同的确定性函数,我会得到一个不同的(错误的答案)。如果我关闭matlab,然后重新打开该函数,再次运行该函数,我将再次得到正确的答案。连续运行该函数会产生错误的答案。这不是一些不被清除的变量的问题,因为我可以在连续运行之间键入clearvars,并且在重新启动matlab之前函数仍然会产生错误的答案。

之前有没有人经历过这种行为?知道是什么原因引起的吗?

1 个答案:

答案 0 :(得分:0)

如果您的代码直接或间接使用生成随机数的函数,则应确保在每次运行开始时使用相同的状态/种子

示例:

rand('twister',5489)
rand(1,5)

rand('twister',5489)
rand(1,5)

您将在两者中获得相同的输出:

ans =
      0.81472      0.90579      0.12699      0.91338      0.63236

请注意,random number generator syntax在最近的MATLAB版本中发生了变化(尽管保持了向后兼容性)。

实现上述目标的新方法是:

RandStream.setDefaultStream( RandStream('mt19937ar','Seed',5489) );
rand(1,5)

或者使用新引入的RNG函数:

rng(5489,'twister')
rand(1,5)