【问题标题】:Selecting randomly a subset of a large number samples in Matlab在 Matlab 中随机选择大量样本的子集
【发布时间】:2014-11-02 09:38:50
【问题描述】:

我想从大量 N 个样本中创建一个 n 个样本的子集,n

我想请教一下,如何在不使用Matlab中的randperm函数的情况下,从大量数据集中选择一个小的子集。

谢谢。

【问题讨论】:

  • 你试过randsample吗?
  • 我之前不知道,但是不行

标签: matlab


【解决方案1】:

如果n 远小于N,则rejection method 是有效的:使用randi 生成可能重复的样本,检查是否有重复(这不太可能),如果是重复:

N = 10000;
n = 100;
repeat = true;
while repeat
    sample = randi(N,1,n);
    repeat = any(sum(bsxfun(@eq, sample, sample.'))>1);
end

【讨论】:

    【解决方案2】:

    您可以尝试使用 single() 将数据大小减半:

    http://www.mathworks.de/help/matlab/ref/single.html

    【讨论】:

      【解决方案3】:

      randi 给出均匀分布的数字,

      Ind = randi(N,[n 1]);
      Observation = data(Ind); 
      

      你也可以使用datasample

      Observation = datasample(data,n,'Replace',false));
      

      正如@Shai 提到的,另一个选项是randsample

      Observation = data(randsample(N,n));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-11-16
        • 2014-09-15
        • 2018-09-17
        • 2023-03-11
        • 1970-01-01
        • 2020-04-25
        • 2017-07-07
        相关资源
        最近更新 更多