How can I randomly select a row from a matrix?

13 views (last 30 days)
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 Comment
chaitra kn
chaitra kn on 17 Aug 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

Sign in to comment.

Accepted Answer

Evan
Evan on 17 Jun 2013
Edited: Evan on 17 Jun 2013
Try this:
ind = ceil(rand * size(m,1));
mrow = m(ind,:);
  5 Comments
Evan
Evan on 17 Jun 2013
No worries! And you're welcome--glad you got it fixed. :)
Sushmita kumari
Sushmita kumari on 11 Feb 2022
i i wish to find a coloum insted of row .please suggest sutable code

Sign in to comment.

More Answers (2)

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

Wayne King
Wayne King on 17 Jun 2013
Edited: Wayne King on 17 Jun 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),:);

Categories

Find more on MATLAB in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!