|
|
Nur bestimmte Zeilen aus Text auslesen |
|
mathphys |
Forum-Century
|
|
Beiträge: 130
|
|
|
|
Anmeldedatum: 03.06.11
|
|
|
|
Wohnort: Deutschland
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.07.2011, 23:21
Titel: Nur bestimmte Zeilen aus Text auslesen
|
|
Hallo
ich will eine Funktion schreiben, welche bestimmte Zeilen aus einer Textdatei auslesen soll. Das Kriterium welche Zeilen ausgelesen werden soll der erste Buchstabe der Zeile sein.
Alle Zeilen die mit N oder C anfangen sollen ausgelesen werden und alle anderen Zeilen der Datei sollen nicht eingespeichert werden.
Sie sollen nur nicht eingelesen werden. Ich will nicht, dass in der originalen Textdatei solche Zeilen gelöscht würden, das wäre fatal.
Ich überlege schon lange wie das geht, bekomme es aber nicht hin. Ich bin für Ratschläge dankbar
Grüße
_________________
Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 13.07.2011, 07:38
Titel:
|
|
Hallo,
z.B. so:
Grüße,
Harald
|
|
|
mathphys |
Themenstarter
Forum-Century
|
|
Beiträge: 130
|
|
|
|
Anmeldedatum: 03.06.11
|
|
|
|
Wohnort: Deutschland
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.07.2011, 09:10
Titel:
|
|
Hi
Danke für deine Hilfe
Den Code werde ich gleich heute untersuchen und sehen ob ich es verstehe.
Gruß
_________________
Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
|
|
|
mathphys |
Themenstarter
Forum-Century
|
|
Beiträge: 130
|
|
|
|
Anmeldedatum: 03.06.11
|
|
|
|
Wohnort: Deutschland
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.07.2011, 14:50
Titel:
|
|
Hi
könntest du bitte Kommentare hinter den Zeilen deines Beispieles schreiben? Ich verstehe es nicht.
meint der Doppelstrich || ein logisches und?
Was genau ist denn data und was meint data = {}
Danke dir
_________________
Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 13.07.2011, 14:59
Titel:
|
|
Hallo,
Hier übrigens die von mir verwendete Testdatei:
Den Formatierungsstring bei textscan wirst du natürlich auf deine Datei anpassen müssen.
Grüße,
Harald
|
|
|
mathphys |
Themenstarter
Forum-Century
|
|
Beiträge: 130
|
|
|
|
Anmeldedatum: 03.06.11
|
|
|
|
Wohnort: Deutschland
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.07.2011, 15:36
Titel:
|
|
Das funktioniert super. Vielen, vielen Dank. Obwohl das klappt möchte ich gerne weiter über deinen Code reden, da ich das ja verstehen will. Schließich will ich in Zukunft auch alleine Programmieren können, irgendwann zumindest...
Die Datei data sind meine gewünschten Daten. Bei der Variable fid bekomme ich als Inhalt eine 3
Was bedeutet diese 3?
Ferner bekomme ich als Varianble l die Daten aus der letzten Zeile des Textes. Wieso?
Noch eine Frage zur Syntax der while Schleife:
was bedeutet denn
Du schriebst in deinem Kommentar
Zitat: |
weiter bis zum Ende der Datei |
Aber wieso dieser Syntax? das muss doch was bedeuten oder?
Danke für deine Hilfe
Grüsse
_________________
Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 13.07.2011, 15:44
Titel:
|
|
Hallo,
fid ist ein File Identifier, ein Verweis auf die Datei. Im Workspace erscheint das als Zahl, die MATLAB dann im entsprechenden Zusammenhang interpretiert (stelle es dir als eine Flugnummer vor - bei LH1234 gibt die 1234 für sich auch keinen Sinn, erst wenn du das als Flugnummer interpretierst).
feof überprüft, ob das Ende der Datei erreicht wurde. Wenn es erreicht ist, sollten wir zu Lesen aufhören, sonst wirds eine Endlosschleife.
Daher
while ~feof(fid) --> solange das Ende der Datei nicht erreicht ist...
Grüße,
Harald
|
|
|
mathphys |
Themenstarter
Forum-Century
|
|
Beiträge: 130
|
|
|
|
Anmeldedatum: 03.06.11
|
|
|
|
Wohnort: Deutschland
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.07.2011, 15:48
Titel:
|
|
Ich denke das habe ich verstanden. Danke!
_________________
Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
|
|
|
mathphys |
Themenstarter
Forum-Century
|
|
Beiträge: 130
|
|
|
|
Anmeldedatum: 03.06.11
|
|
|
|
Wohnort: Deutschland
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 22.07.2011, 11:16
Titel:
|
|
Hallo
ich habe folgenden Code:
Es soll aus einer Textdatei, welche nur solche Zeilen auslesen, welche mit N oder C beginnen. Dies hat bis jetzt auch super geklappt.
Nun habe ich eine neue Textdatei, welche aber die gleiche Struktur hat wie die frühere. Nun erhalte ich aber den Fehler:
Zitat: |
??? Attempted to access l(1); index out of bounds because
numel(l)=0.
Error in ==> date_input at 10
if strcmpi(l(1), 'N') || strcmpi(l(1), 'C') |
Was bedeutet dieser Fehler und wie kann ich ihn beheben?
Danke euch für die Hilfe
_________________
Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
|
|
|
mathphys |
Themenstarter
Forum-Century
|
|
Beiträge: 130
|
|
|
|
Anmeldedatum: 03.06.11
|
|
|
|
Wohnort: Deutschland
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 22.07.2011, 11:23
Titel:
|
|
Hallo
obwohl die Struktur der Dateien die Selbe ist, stand in der 1. Zeile eine einzelne Zahl. Ich vermute, dass es daran gelegen ist.
Ist es möglich dieses Problem zu umgehen, ohne das jedesmal die Textdatei die eingelesen werden soll so anzupassen, dass auch ja wirklich alle Zeilen mit einem Buchstaben anfangen?
Gruß
_________________
Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 22.07.2011, 12:31
Titel:
|
|
Hallo,
vorangestelltes isempty
Grüße,
Harald
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 24.07.2011, 01:10
Titel:
|
|
Hallo mathphys,
Oder:
STNCMPI akzeotiert auch leere Inputs.
Gruß, Jan
|
|
|
pfeili |
Forum-Century
|
|
Beiträge: 177
|
|
|
|
Anmeldedatum: 27.08.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2019b
|
|
|
|
|
|
Verfasst am: 02.08.2011, 08:52
Titel:
|
|
Liebe Leute,
mein txt-File sieht so aus:
Hieraus möchte ich gern ein Cell-Array erstellen, worin die Bezeichnungen in der 1. und die Werte in der 2. Spalte gespeichert werden. Folgendes habe ich versucht:
Allerdings wird mir die Fehlermeldung
Zitat: |
??? Error using ==> textscan
Badly formed format string.
Error in [...] data_read = [data_read; ...
|
Wo liegt mein Fehler?
Für eure Hilfe danke ich euch.
Viele Grüße
pfeili
|
|
|
pfeili |
Forum-Century
|
|
Beiträge: 177
|
|
|
|
Anmeldedatum: 27.08.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2019b
|
|
|
|
|
|
Verfasst am: 16.08.2011, 08:01
Titel:
|
|
|
|
BlackDread |
Forum-Century
|
|
Beiträge: 212
|
|
|
|
Anmeldedatum: 11.05.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2015a
|
|
|
|
|
|
Verfasst am: 16.08.2011, 08:53
Titel:
|
|
Hallo pfeili,
1. hat dir ein ] gefehlt
2. wieso "data = [fid,textscan(l, '%s %s %f')]; "?
dein File funktioniert mit dem unteren Code
Gruß chris
|
|
|
|
Gehe zu Seite 1, 2 Weiter
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|