我有一个矩阵ECGsig
,每行包含1秒长的心电图信号,
我稍后会对它们进行分类,但我想随机更改行,如
idx = randperm(size(ECGsig,1));
ECGsig = ECGsig(idx,:);
但是我希望这只发生一次,而不是每次我运行程序时都会发生,
或者换句话说,只生成一次随机数,
因为如果每次我有不同的分类结果时它都会改变,
除了在单独的m文件中执行此操作并将其保存在mat文件中之外,有没有其他方法可以执行此操作?
谢谢,
答案 0 :(得分:2)
您可以设置随机生成种子,以便每次运行随机结果时,每次都会生成相同随机结果。您可以通过rng
执行此操作。这样,即使多次运行程序,它仍将生成相同的随机序列。因此,尝试做类似的事情:
rng(1234);
rng
的输入将是种子。但是,根据Luis Mendo的评论,rng
仅适用于较新版本的MATLAB。如果你的MATLAB发行版不能提供rng
,请改为:
rand('seed', 1234);
您还可以查看randstream
,但这有点太高级了,所以现在不要看它。要将种子重置为打开MATLAB之前的种子,请选择0的种子。因此:
rng(0); %// or
rand('seed', 0);
通过调用此方法,您从此点生成的任何随机结果都将基于预先确定的顺序。种子可以是你想要的任何整数,但要使用你记得的东西。在执行任何操作之前,请将其放在代码的最开头。我们控制随机数如何产生的主要原因是因为这鼓励产生可重复的结果和研究。这样,如果您决定使用随机或随机化做任何事情,其他人就可以生成您创建的结果。
即使您说过只想运行一次这种随机化,这样可以省去在多次运行程序之前将结果保存到其他文件的麻烦。通过设置种子,即使您多次运行程序,您也可以保证每次都生成相同的随机序列。