对k个值重复随机、唯一采样n次



在Matlab中,我想生成一个矩阵,具有4个随机的,唯一的样本(10个)7次。为了避免for循环,我认为我可以重复我的数据,并在第一个维度上使用统计和机器学习工具箱中的datasample。但是它总是从每列中选择相同的4个值,所以这有点没用。

考虑以下MWE:

randomData  = [50.29; 47.72; 48.38; 48.02; 44.23; 47.17; 48.19; 49.11; 50.44; 53.40];
numOfReps               = 7;
numOfSamples            = 4;
randomDataRepMatrix     = randomData*ones(1, numOfReps);
s           = RandStream('mlfg6331_64');
y           = datasample(s, randomDataRepMatrix, numOfSamples, 'Replace', false);

即使没有RandStream部分,我得到相同的结果…

任何想法?还是需要使用for循环?

我不认为datasamplerandsample可以一次生产几套样品。这是一本"手册"。方法(不一定比使用datasample和循环更快):

[~, ind] = sort(rand(numel(randomData), numOfReps)); % each column is a permutation
ind = ind(1:numOfSamples,:); % keep only the first values in each column
y = randomData(ind); % index into data

相关内容

  • 没有找到相关文章

最新更新