Asked by Graeme
on 17 Jun 2013

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

Answer by Evan
on 17 Jun 2013

Edited by Evan
on 17 Jun 2013

Accepted answer

Try this:

ind = ceil(rand * size(m,1)); mrow = m(ind,:);

Answer by Jonathan Sullivan
on 17 Jun 2013

Try using **randi**

Example

randomRow = m(randi(size(m,1)),:);

Answer by Wayne King
on 17 Jun 2013

Edited by 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),:);

Opportunities for recent engineering grads.

## 0 Comments