Random sampling and removing data

Hi,
I have a set of data points = [10 10 0; 10 13 0; 10 16 0;20 10.1 0; 20 13.1 0 ; 20 16.1 0; 30 10.2 0;30 13.2 0; 30 16.2 0;40 10.3 0; 40 13.3 0; 40 16.3 0; 50 13.4 0];
and for every iteration, i want to select a random set of values and for next iteration previously selected set of value should be remove from the datapoints

 Accepted Answer

You can make the data random by using the below and then you can pick the points.
points = [10 10 0; 10 13 0; 10 16 0;20 10.1 0; 20 13.1 0 ; 20 16.1 0; 30 10.2 0;30 13.2 0; 30 16.2 0;40 10.3 0; 40 13.3 0; 40 16.3 0; 50 13.4 0];
idx = randperm(size(points,1)) ;
%% shuffle the points
points_random = points(idx,:) ;

2 Comments

Thank you. It is what i wanted
Thanks is accepting the answer.. :)

Sign in to comment.

More Answers (1)

Hey Sooraj,
it is not all clear to me whether you want to choose entire rows/columns of your matrix or completely random sets of numbers. So I want to make this suggestion to choose rows by random indexing and deleting them thereafter.
But if KSSVs solution suffices for your purpose, it should be better as it involves less computation. You might want to initialize the variables before looping, too.
dataset = [10 10 0; 10 13 0; 10 16 0;20 10.1 0; 20 13.1 0 ; 20 16.1 0; 30 10.2 0;30 13.2 0; 30 16.2 0;40 10.3 0; 40 13.3 0; 40 16.3 0; 50 13.4 0];
nr_picks = 3;
for i = 1:nr_picks
random_row_index = randi(size(dataset, 1)); % pick random row index
extracted_row = dataset(random_row_index, :); % extract the entire row
dataset(random_row_index, :) = []; % delete this row from the dataset
end

1 Comment

Thank you too, yeah i think KSSVs solution should be sufficient as i want to have less computation. But i will check with your method as well. Thanks

Sign in to comment.

Asked:

on 3 Feb 2021

Commented:

on 3 Feb 2021

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!