nRows = 10000; % number of rows
nSample = 1000; % number of samples
rndIDX = randperm(nRows);
newSample = data(rndIDX(1:nSample), :);
重复抽样:
nRows = 10000; % number of rows
nSample = 1000; % number of samples
rndIDX = randi(nRows, nSample, 1);
newSample = data(rndIDX, :);
使用randperm
与行数相结合。如果x
是您的矩阵:
nrows = size(x,1);
nrand = 1000; % Choose 1000 rows
assert(nrand<=nrows, 'You cannot choose more rows than exist in the matrix');
rand_rows = randperm(nrows, nrand);
xx = x(rand_rows,:); % Select the random rows from x
subset = datasample(data,1000)
subset
将是由1000个样本组成的随机选择数据子集。
要进行无重复采样,请使用:
subset = datasample(data,1000,'Replace',false)
rndIdx = randsample(size(data,1),1000,true); % with replacement
subset = samples(rndIdx(1:1000), :);
rndIdx = randsample(size(data,1),1000,false); % without replacement
subset = samples(rndIdx(1:1000), :);
但是使用randsample与H.Muster的答案基本相同(我已经接受了他的答案,因为它不需要任何工具箱)。
注意:有关使用放回抽样和不使用放回抽样之间的差异的更多信息,请参见此页面。
不确定您是否已经编写了任何代码。以下mathworks链接显示了随机抽样的示例。可以查看它以获取想法。
此外,这里有一个使用统计工具箱中的randsample的代码。只是一个逻辑,您可能需要相应地进行调整。
矩阵m有N行
从m中随机抽取n行
Sample = m(randsample(1:N,n),:)
randsample(1:N,n)
上述结果是从1到N的n个随机整数序列。
randi
。我需要在我的答案中添加一个代码示例吗? - H.Muster