Vergleichen Sie Dateien mit MATLAB
Ich würde gerne wissen, wie könnte ich zwei lokale Dateien vergleichen (zeilenweise) (*.xml .m,.txt,...usw) mit Hilfe von MATLAB.
file1 = 'toto.xml';
file2 = 'titi.xml';
Ich bin auf der Suche nach einer MATLAB-Funktion (über die Kommandozeile), das gibt mir true/false oder eine Liste von diff.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie mit Hilfe von MATLAB-s system Befehl mit fc wenn Sie in Windows:
Hier status wird 0, wenn die Dateien gleich sind und 1 wenn nicht. Außerdem Ergebnis wird die diff-Ergebnis, wenn Dateien unterschiedlich sind.
Für andere Betriebssysteme, die Sie verwenden können ähnliche Befehle wie cmp in Unix statt fc.
UPDATE:
Für cross-Plattform-Kompatibilität Sie können versuchen, die folgenden:
cmp
nicht byte-für-byte-Vergleich; Sie wollendiff
auf Unix-für-Zeile-Weise Vergleich.AFAIK die einzige diff-tool in MATLAB ist
visdiff
die zurück keine Informationen, sondern zeigt ein Fenster mit den beiden Dateien nebeneinander an und markiert die verschiedenen Linien.ändern Sie zunächst die text-Datei zu string, dann verwenden strcmp-Funktion von matlab.
Ersten Lesen können Sie sowohl Dateien von Linien:
Haben Sie 2 cell-arrays
lines1
undlines2
. Vergleichen kann man die ganzen arrays mitZeilen vergleichen ist nicht so offensichtlich und hängt von Ihrem Bedarf. Was Sie tun möchten, wenn die Anzahl der Zeilen ist unterschiedlich? Zum Beispiel, um herauszufinden, welche Zeilen aus Datei2 vorhanden sind, die in Datei1 (unabhängig von Reihenfolge), die Sie tun können:
idx1
werden logisch repräsentiert Zeilen in Datei1, die die gleichen Linien in Datei2.idx2
werden numerische (position) index, wo diese Linien sich in Datei2 (das erste vorkommen).Wenn die Anzahl der Zeilen gleich sind:
lines1
undlines2
sollte cell-arrays von strings. Bitte versuchen Sie es erneut.visdiff
wie in @Jakob ' s Antwort. Einfach gesagt, wenn die Dateien gleich sind oder unterschiedlich, können Sie eine Funktion schreiben, die basierend auf meine Antwort (siehe die Zeile mit isequal).In Fall, dass Sie eine Datei (oder einen Weg) mit Leerzeichen (wie c:\my Ordner\myfile.m), wickeln Sie den Dateinamen mit Anführungszeichen (") in der DOS-Eingabeaufforderung. Beachten Sie, dass der Apostroph wird noch benötigt:
Alternativ können Sie die Anführungszeichen, sobald Sie die Definition der Variablen der Datei-name: