【问题标题】:sampling rows with non-uniform inclusion probabilities in MatlabMatlab中具有非均匀包含概率的采样行
【发布时间】:2014-07-07 17:55:54
【问题描述】:

我有一个包含 n 行的矩阵 M,我有一个包含每行包含概率的 n 维列向量 P M。请注意,每一行的概率可能不同,并且它们不会相加。我想有效地对 M 的行进行采样,方法是将每一行 M_i 以概率 P_i 包含在样本中(独立地)。请注意,我不需要采样矩阵具有特定大小 k,我只需要根据包含概率随机选择每一行。

我已经做了很多搜索,并且知道 randsampledatasample,但是这些都不是我想要的。这种采样有内置函数吗?如果不是,那么在 Matlab 中完成此任务的最有效方法是什么?

【问题讨论】:

    标签: matlab random sample random-sample


    【解决方案1】:

    使用rand 与每个概率进行比较,以生成logical index,该logical index 告诉您选择了M 的哪些行。

    基本思想是rand 生成在区间 (0,1) 内均匀分布的随机数,因此一个这样的数字小于给定 x 的概率(与 x 介于 0 和 1 之间)正好是 x

    probs = [.6; .3; .2; .4]; %// contains n probabilities (where n is size(M,1))
    ind = rand(size(probs))<probs; %// "0"/"1" logical index
    result = M(ind,:) %// pick only rows with a "1"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 2012-12-20
      • 2012-01-23
      • 1970-01-01
      • 1970-01-01
      • 2017-11-26
      • 2016-07-31
      相关资源
      最近更新 更多