Tengo una matriz rectangular n-por-m (n! = M). ¿Cuál es la mejor manera de averiguar si hay filas duplicadas en MATLAB? ¿Cuál es la mejor manera de encontrar los índices de los duplicados?¿Cómo puedo saber si una matriz rectangular tiene filas duplicadas en MATLAB?
Respuesta
uso único() para encontrar los valores de las filas distintas. Si termina con menos filas, hay duplicados. También le dará índices de una ubicación de cada uno de los valores distintos. Todos los demás índices de fila son sus duplicados.
x = [
1 1
2 2
3 3
4 4
2 2
3 3
3 3
];
[u,I,J] = unique(x, 'rows', 'first')
hasDuplicates = size(u,1) < size(x,1)
ixDupRows = setdiff(1:size(x,1), I)
dupRowValues = x(ixDupRows,:)
Ejecutar a través de las filas de la matriz, y para cada par, prueba si
row1 == row2
Esto funciona, pero definitivamente es más lento y más detallado que la otra opción básica (es decir, usando 'unique()'). – bnaul
Puede utilizar las funciones UNIQUE y SETDIFF para lograr esto:
>> mat = [1 2 3; 4 5 6; 7 8 9; 7 8 9; 1 2 3]; %# Sample matrix
>> [newmat,index] = unique(mat,'rows','first'); %# Finds indices of unique rows
>> repeatedIndex = setdiff(1:size(mat,1),index) %# Finds indices of repeats
repeatedIndex =
4 5
Digamos que su matriz es M:
[S,idx1] = sortrows(M);
idx2 = find(all(diff(S,1) == 0,2));
out = unique(idx1([idx2;idx2+1]));
cabo contendrá los índices de fila duplicados si los hubiere.
Esto solo funcionará si sus filas duplicadas están una al lado de la otra. – gnovice
Mi error. Asunción errónea ... – upperBound
Bueno, técnicamente el OP nunca * explícitamente * dijo si las filas duplicadas colisionan entre sí o no. Aunque no es tan general como el uso de UNIQUE, esta solución se ejecuta * sustancialmente * más rápido en el caso específico de los duplicados vecinos, por lo que +1. – gnovice
- 1. ¿Cómo puedo saber si una tabla es una matriz?
- 2. ¿Cómo puedo saber si una ventana tiene foco? (API Win32)
- 3. ¿Cómo puedo saber si una lista tiene un tercer artículo?
- 4. ¿Cómo puedo saber si un proceso tiene una interfaz gráfica?
- 5. ¿Cómo puedo eliminar filas duplicadas en una tabla?
- 6. Región rectangular en una matriz
- 7. ¿Cómo puedo saber si Matlab está ocupado cuando usa GUI?
- 8. ¿Cómo puedo encontrar efectivamente filas de blob duplicadas en MySQL?
- 9. ¿Cómo devolver solo una fila si hay varias filas duplicadas y aún así devolver las filas que no son duplicadas?
- 10. Cómo saber si una tabla tiene algunas columnas únicas
- 11. Cómo saber si tiene varios Django instalados
- 12. ¿Cómo saber si urllib.urlretrieve tiene éxito?
- 13. ¿Cómo puedo saber si mi servidor tiene NUMA?
- 14. Seleccionar una fila de filas duplicadas
- 15. Renombrar filas duplicadas
- 16. php: comprueba si una matriz tiene duplicados
- 17. Cómo comprobar si SQLDataReader no tiene filas
- 18. ¿Cómo puedo saber dónde tiene BufferedImage Alpha en Java?
- 19. Consolidar filas duplicadas
- 20. iPhone etc: ¿cómo saber si el dispositivo tiene una cámara?
- 21. ¿Cómo saber si una SqlConnection tiene un SqlDataReader adjunto?
- 22. cómo saber si uitableview tiene una celda seleccionada
- 23. Eliminar filas duplicadas y mantenga una fila
- 24. ¿Cómo eliminar filas duplicadas con SQL?
- 25. ¿Cómo puedo saber rápidamente si una lista contiene solo duplicados?
- 26. Matlab, ¿Cómo comparo cada elemento de una matriz de filas con cada elemento de otra matriz de filas?
- 27. ¿Cómo puedo saber si una impresora imprimirá en un archivo?
- 28. cómo eliminar filas duplicadas de una tabla en mysql
- 29. ¿Cómo detectar filas duplicadas en una tabla de SQL Server?
- 30. ¿Determina si $ sth tiene filas sin consumirlo?
+1: ¡Dang, vencerme por 49 segundos! – gnovice
¿Alguien sabe el algoritmo que Matlab usa para calcular esto? – Will