Random order of rows Matlab
Solution 1:
To shuffle the rows of a matrix, you can use RANDPERM
shuffledArray = orderedArray(randperm(size(orderedArray,1)),:);
randperm
will generate a list of N
random values and sort them, returning the second output of sort
as result.
Solution 2:
This can be done by creating a new random index for the matrix rows via Matlab's randsample function.
matrix=matrix(randsample(1:length(matrix),length(matrix)),:);
Solution 3:
While reading the answer of Jonas I found it little bit tough to read, tough to understand. In Mathworks I found a similar question where the answer is more readable, easier to understand. Taking idea from Mathworks I have written a function:
function ret = shuffleRow(mat)
[r c] = size(mat);
shuffledRow = randperm(r);
ret = mat(shuffledRow, :);
Actually it does the same thing as Jonas' answer. But I think it is little bit more readable, easier to understand.