How can I randomly select a row from a matrix?

25 vues (au cours des 30 derniers jours)
Graeme
Graeme le 17 Juin 2013
Commenté : Sushmita kumari le 11 Fév 2022
I have a matrix (m) that is 17543 x 17. The values are of the type double.
I want to randomly select 1 row from this matrix and save it as a new vector.
I tried this:
mrow = m(randsample(m:17543,1),:)
This works if the values are integers but it does not work because they are doubles.
It returns the error message:
"Subscript indices must either be real positive integers or logicals."
Any help would be really appreciated.
Thanks,
Graeme
  1 commentaire
chaitra kn
chaitra kn le 17 Août 2019
this is for to select only first row,how can i select more than one random rows in two 2 matrix.
please help me out

Connectez-vous pour commenter.

Réponse acceptée

Evan
Evan le 17 Juin 2013
Modifié(e) : Evan le 17 Juin 2013
Try this:
ind = ceil(rand * size(m,1));
mrow = m(ind,:);
  5 commentaires
Evan
Evan le 17 Juin 2013
No worries! And you're welcome--glad you got it fixed. :)
Sushmita kumari
Sushmita kumari le 11 Fév 2022
i i wish to find a coloum insted of row .please suggest sutable code

Connectez-vous pour commenter.

Plus de réponses (2)

Jonathan Sullivan
Jonathan Sullivan le 17 Juin 2013
Try using randi
Example
randomRow = m(randi(size(m,1)),:);

Wayne King
Wayne King le 17 Juin 2013
Modifié(e) : Wayne King le 17 Juin 2013
m = randn(17543,17);
idx = randperm(size(m,1),1);
B = m(idx,:);
idx tells you which row you randomly selected.
If you have an older version of MATLAB where the above does not work do:
m = randn(17543,17);
idx = randperm(size(m,1),1);
B = m(idx(1),:);

Catégories

En savoir plus sur MATLAB dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by