3

我需要在matlab中随机打乱nx1矩阵的值。我不确定如何有效地执行此操作,我需要多次执行 n > 40,000。

例子

之前的矩阵:

1 2 2 2 3 4 5 5 4 3 2 1

乱码:

3 5 2 1 2 2 3 4 1 4 5 2

谢谢你

4

1 回答 1

7

如果您的数据存储在 matrix 中,那么您可以使用randpermdata生成“加扰”数据,如下所示:

scrambled = data(randperm(numel(data)));

这是无放回抽样,因此 中的每个值data都会在 中出现一次scrambled

对于带替换的采样(中的值data可能出现scrambled多次,有些可能根本不出现),您可以这样使用randi

scrambled = data(randi(numel(data),1,numel(data)));
于 2013-01-08T21:11:07.833 回答