Digamos que tenemos una matriz de tamaño 100x3Orden aleatorio de filas Matlab
¿Cómo se mezclarían las filas en MATLAB?
Digamos que tenemos una matriz de tamaño 100x3Orden aleatorio de filas Matlab
¿Cómo se mezclarían las filas en MATLAB?
a barajar las filas de una matriz, puede utilizar RANDPERM
shuffledArray = orderedArray(randperm(size(orderedArray,1)),:);
randperm
generará una lista de valores aleatorios N
y ordenarlos, volviendo la segunda salida del sort
como resultado.
Su solución funciona aproximadamente 2.5 veces más rápido que la mía, al menos en mi computadora. – KnowledgeBone
Esto se puede hacer mediante la creación de un nuevo índice aleatorio para las filas de la matriz a través de la función de randsample de Matlab.
matrix=matrix(randsample(1:length(matrix),length(matrix)),:);
Creo que tenía la intención de utilizar ''false''; si se tomaba muestras con reemplazo, la matriz resultante contendría filas duplicadas, mientras que otras habrían desaparecido. En el caso del muestreo sin reemplazo, 'randsample' llama a' randperm', que solo debería ser un poco más lento que llamar 'randperm' directamente. – Jonas
Reparado, gracias Jonas. – KnowledgeBone
Para grandes conjuntos de datos, puede utilizar la función personalizada Shuffle
Utiliza D. E. Algoritmo aleatorio de Knuth (también llamado Fisher-Yates) y el simpático generador de números aleatorios KISS (G. Marsaglia).
Mientras leía el answer of Jonas me pareció un poco difícil de leer, difícil de entender. En Mathworks encontré un question similar donde la respuesta es más legible, más fácil de entender. Tomando la idea de Mathworks He escrito una función:
function ret = shuffleRow(mat)
[r c] = size(mat);
shuffledRow = randperm(r);
ret = mat(shuffledRow, :);
En realidad, hace lo mismo que Jonas' answer. Pero creo que es un poco más legible, más fácil de entender.
posible duplicado de [¿Cómo selecciono aleatoriamente k puntos de N puntos en MATLAB?] (Http://stackoverflow.com/questions/1856141/how-do-i-randomly-select-k-points-from- n-points-in-matlab) – Jonas
No se trata de seleccionar, se trata de "desordenar" o mezclar las filas de una matriz – cMinor
En realidad, tienes razón. No es exactamente la misma pregunta. Ver mi respuesta a continuación. – Jonas