在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循环?
我不认为datasample
或randsample
可以一次生产几套样品。这是一本"手册"。方法(不一定比使用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