我有一些输入行。为了执行一些数值统计测试,我需要大量相同大小的样本,这些样本是从输入行中采样而来的,有无替换。我有一些非常简单的代码可以做到:
inputRow = [1 3 4 2 7 5 8 6];
rowSize = numel(inputRow);
nPermutations = 10;
permutedMatrix = nan(nPermutations,rowSize);
replaceFlag = true;
permutedMatrix(1,:) = inputRow;
for iPerm = 2:nPermutations
permutedMatrix(iPerm,:) = datasample(inputRow,rowSize,'Replace',replaceFlag);
end
我的问题是:是否可以生成没有for循环的所需矩阵?
答案 0 :(得分:1)
我希望这会有所帮助,
替换后重新采样:
input=[2 3 4 2 3 4];
len=size(input,2);
number_of_permutations=10;
rand_idx=randi(len,1,len*number_of_permutations);
permutation_matrix=zeros(len,number_of_permutations);
permutation_matrix(:)=input(rand_idx);
permutation_matrix=permutation_matrix';
这是重采样而无需替换
input=[2 3 4 2 3 4];
len=size(input,2);
number_of_permutations=10;
rand_idx=repmat(randperm(len,len),1,number_of_permutations);
permutation_matrix=zeros(len,number_of_permutations);
permutation_matrix(:)=input(rand_idx);
permutation_matrix=permutation_matrix';