Ich habe eine große TXT-Datei und Teile, die ich analysieren möchte (mit Text-Scan), sagen, ich habe 10000 Zeilendaten und einen Teil, der bei Zeile 300 beginnt, der Teil hat auch eine Überschrift von 10 Zeilen sagen, wie kann ich die ersten 300 Zeilen überspringen (nicht mit Header-Funktion der Text-Scan natürlich, wie ich dann nicht in der Lage sein werde, meine tatsächliche 10 Zeile Header) oder gibt es eine Möglichkeit, in der ich kann Springe zu Zeile 300 und starte den Textscan von dort aus, als wäre 301 Zeile die erste Zeile.Überspringen von Zeilen in TXT-Datei mit textscan in Matlab
Antwort
Also, Ihre Daten unter der Annahme wird durch die folgenden erzeugt (da Sie nicht erwähnt haben, wie es in Ihrer Frage formatiert ist):
fid = fopen('datafile.txt', 'w');
for i=1:300
fprintf(fid, 'ignore%d\n', i);
end
for i=301:310
fprintf(fid, 'header%d\n', i);
end
for i=311:10000
fprintf(fid, '%d\n', i);
end
fclose(fid);
Sie die Daten, indem zuerst fgetl
zum 300sten Zeile lesen , dann zweimal mit textscan
, um die Header-Informationen und die Daten zu erhalten. Grundsätzlich ist die Sache zu erinnern, dass textscan
ab dem Ort arbeitet, wo fid
zeigt. Also, wenn es auf die 301. Zeile zeigt, beginnt es von dort zu scannen. So, hier ist der Code die Datei oben zu lesen, ab Zeile 301:
fid = fopen('datafile.txt', 'r');
for i=1:300
fgetl(fid);
end
scannedHeader = textscan(fid, '%s', 10);
scannedData = textscan(fid, '%d');
fclose(fid);
NB: wenn die Daten immer das gleiche Format, können Sie ftell
verwenden zu wissen, wo sie überspringen genau dann verwenden fseek
zu diesem Offset gehen.
Ich habe Zeilennummern, wo der Teil beginnt mit Text scannen 'textscan (fid, '% s', 'Delimiter', '\ n')' Ich möchte jetzt direkt zu diesen Zeilen springen, wie man zur 300sten Zeile springt direkt ohne von Anfang an zu zählen immer – maz
fseek wird nicht helfen, da meine Daten asymmetrisch sind und Werte und Tabellen enthalten, ich möchte etwas, das Zeilen springen kann, wo Zeilen von oben genanntem Code erhalten werden, Ihr zweiter Code scheint in Ordnung (ich benutze derzeit den gleiche Idee), aber meine Datei ist groß, Millionen von Zeilen, kann ich nicht die For-Schleife erwähnt – maz
Sie können nicht. 'fgetl' in einer Schleife ist der einzige Weg, wie oben beschrieben. – houtanb
- 1. Matlab Textscan und Datum
- 2. Wrong float Präzision textscan in Matlab
- 3. Fehler in textscan
- 4. Konstruieren Sie eine Struktur von textscan Ausgabe in MATLAB
- 5. textscan mit unterschiedlichen Formatdaten
- 6. Fehler bei der Verwendung von horzcat - textscan - Import nach Matlab
- 7. Überspringen mehr Zeilen in Python
- 8. Matlab: Extrahieren von Zeilen mit bestimmten Datetime
- 9. Matlab (Textscan), lesen Zeichen aus der angegebenen Spalte und Zeile
- 10. einige Zeilen in read.csv in R überspringen
- 11. Textdatei in Matlab scannen
- 12. Löschen von [] Zeilen in Array Struct MATLAB
- 13. Schreiben von Zeilen/Spalten von .csv in Matrix mit Matlab
- 14. Zeilen im Zeitbereich überspringen, der in Tabelle
- 15. NaN Zeilen in Matlab Tabelle
- 16. flex datagrid - Elementrenderer und Überspringen von Zeilen
- 17. fgetcsv überspringen leere Zeilen in Datei
- 18. Überspringen von Linien in Grep
- 19. Zeilen überspringen: Exportieren von Daten aus SSIS in Excel-Datei
- 20. Überspringen von Zeilen, Csv Dict Reader Python
- 21. Wie (und) während der Verwendung von textscan übersprungen werden kann?
- 22. Zeilen überspringen mit readLine() - Swift 2.2
- 23. eine Textdatei von rekursiv Überspringen Zeilen Lesen mit numpy
- 24. PHP-Zeilen überspringen beim Lesen
- 25. Inhalte von mehreren Klammern in Matlab extrahieren?
- 26. Lesen .txt. in Daten Matlab
- 27. gnuplot - überspringen ersten beiden Zeilen
- 28. Wie in Matlab
- 29. Zeilen in einer Select-Anweisung in Teradata überspringen
- 30. Nur eine Spalte mit Textscan scannen
Haben die verschiedenen Teile unterschiedliche Formate? Sie sagen also, dass ein Teil von 300 bis 10.000 Zeilen gescannt werden soll. Und Zeilen 300 bis 310 sind der Header? Wie werden die Daten formatiert? – houtanb
nein, sagen 300-340 ist der Teil, der Header von 300-310 hat, kann es mehrere solcher Teile in 10.000 Zeilen. – maz