how to select random rows from a matrix?

13 visualizaciones (últimos 30 días)
N
N el 7 de Oct. de 2011
Editada: Walter Roberson el 10 de Mzo. de 2024
i have a matrix of size 10037 by 9.
please tell me how to select 1000 random rows from the matrix and save it as a mnew matrix in another variable.
thanks in advance.

Respuestas (2)

Andrei Bobrov
Andrei Bobrov el 7 de Oct. de 2011
m = rand(10037,9);
k = randperm(10037);
mnew = m(k(1:1000),:);
  7 comentarios
Jan
Jan el 24 de Oct. de 2017
Or with the original order:
M = rand(10037,9);
k = randperm(10037, 1000);
Selected = M(k, :);
r = true(1,10037);
r(k) = false;
Remaining = M(r, :);
Alejandro Reyes
Alejandro Reyes el 10 de Mzo. de 2024
This works. Thank you!

Iniciar sesión para comentar.


Richard Willey
Richard Willey el 7 de Oct. de 2011
Statistics Toolbox includes a nice function called randsample
% Generate a matrix named foo
foo = randn(10000,2);
% draw 1000 random samples without replacement
index = randsample(1:length(foo), 1000);
bar = foo(index,:);
% draw 1000 random samples with replacement
index = randsample(1:length(foo), 1000, true);
bar = foo(index,:);
  2 comentarios
Peter Perkins
Peter Perkins el 7 de Oct. de 2011
If you happen to be using R2011b, and have access to the Statistics Toolbox, you can also use the new datasample function:
m = rand(10037,9);
mnew = datasample(m,1000);
This also allows you to sample with replacement, or with weights.
Ege
Ege el 4 de En. de 2015
Editada: Ege el 4 de En. de 2015
And when we selected 1000 of them, how do we delete the selected rows from the original matrix which in this case foo ? And what does replacement mean in here?

Iniciar sesión para comentar.

Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by