【问题标题】:Scramble an nx1 matrix in matlab efficiently?有效地在matlab中打乱nx1矩阵?
【发布时间】:2013-01-09 06:38:38
【问题描述】:

我需要在 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

谢谢

【问题讨论】:

  • 这取决于几件事情,最大的一件事情是这个矩阵的“混乱”程度。只交换一些值就足够了还是应该全部移动?
  • 随机打乱完全是本意

标签: matlab


【解决方案1】:

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

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

这是采样没有替换,所以data中的每个值都会在scrambled中出现一次。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-05
    • 2019-02-03
    • 2012-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    相关资源
    最近更新 更多