Быстрый способ создания матрицы выбранных строк с или без замены в MATLAB - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть строка ввода.Для выполнения некоторых числовых статистических тестов мне нужно много выборок одинакового размера, которые взяты из входной строки с заменой или без нее.У меня есть очень простой код, который делает это:

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?

1 Ответ

0 голосов
/ 27 сентября 2018

Надеюсь, это поможет,

повторная выборка с заменой:

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';
...