【问题标题】:One-time randomization一次性随机化
【发布时间】:2014-12-12 02:40:47
【问题描述】:

我有一个矩阵,ECGsig,每行包含一个 1 秒长的 ECG 信号,

我稍后会对它们进行分类,但我想随机更改行,例如,

idx = randperm(size(ECGsig,1));
ECGsig = ECGsig(idx,:);

但是我希望这种情况只发生一次,而不是每次运行程序时都发生,

或者换句话说,随机数只生成一次,

因为如果每次都改变我会有不同的分类结果,

除了在单独的 m 文件中执行并将其保存在 mat 文件中之外,还有什么方法可以做到这一点?

谢谢,

【问题讨论】:

  • 我绝对建议将随机排序的记录保存在新的mat文件中,每次重新分析时都会保存。

标签: matlab random matrix


【解决方案1】:

您可以设置随机生成种子,这样每次运行随机结果时,每次都会生成相同的随机结果。您可以通过rng 执行此操作。这样,即使多次运行程序,它仍然会生成相同的随机序列。因此,请尝试执行以下操作:

rng(1234);

rng 的输入将是种子。但是,根据 Luis Mendo 的评论,rng 仅适用于较新版本的 MATLAB。如果您的 MATLAB 发行版不提供 rng,请改为:

rand('seed', 1234);

你也可以看看randstream,不过这有点太高级了所以我们现在不看。要将种子重置为打开 MATLAB 之前的状态,请选择种子 0。因此:

rng(0); %// or
rand('seed', 0);

通过调用它,您从此点生成的任何随机结果都将基于预先确定的顺序。种子可以是你真正想要的任何整数,但使用你会记住的东西。在你做任何事情之前,把它放在你代码的最开始。我们可以控制随机数的生成方式的主要原因是因为这鼓励产生可重复的结果和研究。这样,如果您决定使用随机或随机化进行任何操作,其他人可以生成您创建的结果。

即使您说您只想运行一次随机化,这也可以省去您在多次运行程序之前将结果保存到不同文件的麻烦。通过设置种子,即使您多次运行程序,也可以保证每次生成相同的随机序列。

【讨论】:

  • +1 对于旧的 Matlab 版本,使用rand('seed', 1234) 或查看randstream
  • @LuisMendo 谢谢路易斯!我会用这些信息修改我的帖子。
猜你喜欢
  • 2012-08-05
  • 2018-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-20
  • 2014-06-10
  • 1970-01-01
相关资源
最近更新 更多