如何在Matlab高效地混淆nx1矩阵?

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

谢谢


这取决于几个因素,最重要的是这个矩阵需要有多么“混乱”。仅交换一些值是否足够,还是所有值都应该移动? - Jordan Kaye
随机打乱整个内容是意图。 - Alex Mousavi
1个回答

7
如果您的数据存储在矩阵data中,那么您可以使用randperm生成“混淆”的数据,如下所示:
scrambled = data(randperm(numel(data)));

这是一种无放回抽样方法,所以在 scrambled 中每个值都只出现一次。

如果需要进行有放回抽样(data 中的值可以多次出现或根本不出现),可以像这样使用 randi

scrambled = data(randi(numel(data),1,numel(data)));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接