Ich habe eine n-mal-m Rechteckmatrix (n! = M). Was ist der beste Weg herauszufinden, ob in MATLAB doppelte Zeilen enthalten sind? Wie finde ich die Indizes der Duplikate am besten?Wie kann ich feststellen, ob eine rechteckige Matrix in MATLAB doppelte Zeilen enthält?
Antwort
Verwenden einzigartiges() die unterschiedlichen Zeilenwert zu finden. Wenn Sie weniger Zeilen haben, gibt es Duplikate. Es gibt Ihnen auch Indizes von einem Ort jedes der verschiedenen Werte. Alle anderen Zeilenindizes sind Ihre Duplikate.
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,:)
Lauf durch die Zeilen der Matrix, und für jedes Paar, zu testen, ob
row1 == row2
Dies funktioniert, ist aber definitiv sowohl langsamer als auch ausführlicher als die andere grundlegende Option (d. H. Mit 'unique()'). – bnaul
Sie können die Funktionen nutzen UNIQUE und SETDIFF dies zu erreichen:
>> 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
Sagen Sie Ihre Matrix ist M:
[S,idx1] = sortrows(M);
idx2 = find(all(diff(S,1) == 0,2));
out = unique(idx1([idx2;idx2+1]));
aus werden die doppelten Zeilenindizes wenn überhaupt enthalten.
Dies funktioniert nur, wenn Ihre duplizierten Zeilen nebeneinander liegen. – gnovice
Mein Fehler. Falsche Annahme ... – upperBound
Nun, technisch hat das OP nie * explizit * gesagt, ob die duplizierten Zeilen aneinander liegen oder nicht. Obwohl nicht so allgemein wie die Verwendung von UNIQUE, läuft diese Lösung im speziellen Fall benachbarter Duplikate * wesentlich * schneller, also +1. – gnovice
- 1. Wie kann ich feststellen, ob eine .woff-Schriftart Hinweise enthält?
- 2. Wie kann man feststellen, ob eine Matrix in Matlab leer ist oder nicht?
- 3. PHP: Wie kann man feststellen, ob eine Zeichenfolge Sonderzeichen enthält?
- 4. Wie interpoliere ich eine Matrix in MATLAB?
- 5. Plot Zeilen einer 2d-Matrix in Matlab
- 6. Ich benutze MATLAB R2015b, Wie erzeugen wir eine rechteckige Matrix mit oberen Diagonalelementen 1?
- 7. Matrix-Zeilen/-Spalten effizient in MATLAB löschen
- 8. Traverse rechteckige Matrix in Diagonalstreifen
- 9. Wie kann ich feststellen, ob eine Anfrage gut skaliert wird?
- 10. Wie kann ich eine Matrix in MATLAB abtasten?
- 11. Überprüfen, ob eine Matrix eine Identitätsmatrix in Matlab ist
- 12. Wie kann ich feststellen, ob eine zusammengesetzte Formatzeichenfolge ungültig ist?
- 13. Wie kann ich feststellen, ob ein Zweig eine Fehlerkorrektur in Perforce enthält?
- 14. Wie kann ich feststellen, ob eine POST-Anfrage Dateien zum Hochladen in Sails.js enthält?
- 15. Wie kann ich feststellen, ob eine Klasse serialisiert werden kann?
- 16. Norm Funktion Zeilen der Matrix Anwendung - Matlab
- 17. Wie kann ich feststellen, ob ein Index eine Spalte vom Typ varchar (max) enthält?
- 18. Überprüfen Sie, ob Matrix enthält gültige Elemente
- 19. Wie kann ich feststellen, ob eine .pem-Datei einen öffentlichen oder privaten Schlüssel enthält?
- 20. Wie kann ich feststellen, ob eine Zeichenfolge nur Leerzeichen enthält, mit Javascript?
- 21. Wie kann ich feststellen, ob eine Liste ein drittes Element enthält?
- 22. Wie kann ich feststellen, ob ein Perl-Hash eine Schlüsselzuordnung zu einem nicht definierten Wert enthält?
- 23. Wie kann ich feststellen, ob eine Java-Ganzzahl null ist?
- 24. xsl: Wie kann ich feststellen, ob eine Variable deklariert wurde?
- 25. Wie kann ich feststellen, ob eine Funktion ein Diagramm generiert
- 26. Wie kann ich feststellen, ob eine jQuery-Dialogabfrage initialisiert wurde?
- 27. Wie kann ich feststellen, ob WebBrowser eine Fehlerseite aufruft?
- 28. Wie kann ich feststellen, ob eine Vollbildanwendung ausgeführt wird?
- 29. Wie kann ich feststellen, ob eine URL umgeleitet wird?
- 30. Wie kann ich feststellen, ob eine Rust-Bibliothek veraltet ist?
+1: Dang, schlag mich um 49 Sekunden! – gnovice
Kennt jemand den Algorithmus, den Matlab verwendet, um das zu berechnen? – Will