我需要在 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
谢谢
最佳答案
如果您的数据存储在矩阵 data
中,那么您可以使用 randperm 生成“加扰”数据像这样:
scrambled = data(randperm(numel(data)));
这是没有替换的采样,所以data
中的每个值都会在scrambled
中出现一次。
对于 with 替换采样(data
中的值可能多次出现在 scrambled
中,有些可能根本不出现),您可以使用randi
像这样:
scrambled = data(randi(numel(data),1,numel(data)));
关于matlab - 在 matlab 中有效地扰乱 nx1 矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14223797/