|
|
Finde spez. Position in File |
|
Slip |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 29.10.2011, 10:38
Titel: Finde spez. Position in File
|
 |
Hallo Community
Ich versuche gerade für meine Projektarbeit in MATlab etwas bestimmtes zu realisieren. Ich finde nur einen Befehl nicht den ich benötige. Evtl kann mir ja hier jemand behilflich sein
Erklärung:
Ich habe ein *.txt file in dem meherere Daten in mehreren Zeilen stehen. z.B.
------------
text1
text2
x=asd;y=xyf;
text4
z=1234;
usw...
Nun möchte ich mit fopen die datei einlesen und z.b. z auslesen und mir in eine Variable packen. In C ging das u.a. mit fgets.
Leider stehe ich entweder böse auf dem Schlauch oder stell mich zu doof für Matlab an. Ich bekomms nicht hin, dass ich eine Spezifische Stelle in der Datei auslesen kann. Also z.b. so:
VAR1 = Finde stelle "Z=" lese von dort bis zum delimiter ";"
Kann mir jemand behilflich sein?
Danke im Voraus!
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 29.10.2011, 11:15
Titel:
|
 |
Hallo,
auch in MATLAB kannst du dafür FGETS oder FGETL verwenden.
Was hast du denn bisher versucht?
Grüße,
Harald
|
|
|
Slip |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 29.10.2011, 15:33
Titel:
|
 |
Meherer Dinge ... Aber weder mit FGETS noch mit FGETL bekomm ich das was ich haben will. Exeprimentiere nun mit regexp. Aber auch das bietet nicht die richtige Funktionalität
Nochmal zu dem Beispiel:
------------
text1
text2
x=asd;y=xyf;
text4
z=1234;
usw...
Ich möchte ums genau zu sagen dass ich den Wert "xyf" ausgegeben bekomme.
Also muss ich
1) Die gesamte Datei (und die is schweine lang) einlesen
2) Eine bestimmte Anfagsposition suchen (hier 'y=')
3) Text einlesen bis Wert erreicht (hier ';')
Die Matlab Beispiele in der Hilfe sind teilweise zwar ganz okay, aber furchtbar schlecht beschrieben. Bei regexp soll man start / ende angeben können, aber es gibt nicht ein Beispiel wie man da Werte hinterlegt...
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 29.10.2011, 15:52
Titel:
|
 |
Hallo,
ich meinte schon, dass du das, was deinem Ziel am nächsten kam, auch postest (also: den Code).
Hier mal ein Versuch von mir:
Grüße,
Harald
|
|
|
Balu |

Forum-Anfänger
|
 |
Beiträge: 28
|
 |
|
 |
Anmeldedatum: 17.09.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 25.09.2012, 13:05
Titel:
|
 |
hallo Harald,
bei mir gibt die Schleife solchen Fehler ab:
Attempted to access ende(1); index out of bounds because numel(ende)=0
leider verstehe ich nicht was es bedeutet, kannst du kurz erklären was es ist?
Gruß
Dieter
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 25.09.2012, 19:12
Titel:
|
 |
Hallo,
der Code war auf einen sehr speziellen Fall zugeschnitten: Suche nach einem String, der mit "y=" anfängt und mit ";" endet.
Ich vermute mal, dass du nicht ganz genau das gleiche Problem hast. Die Frage wird also sein, was bei dir anders ist und warum der Code bei dir dann nicht funktioniert.
Die Frage kannst aber nur du beantworten, indem du ein Beispiel der zu analysierenden Datei und den Code, den du verwendest, postest.
Grüße,
Harald
|
|
|
Balu |

Forum-Anfänger
|
 |
Beiträge: 28
|
 |
|
 |
Anmeldedatum: 17.09.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.09.2012, 07:32
Titel:
|
 |
Hallo Harald,
mein Text (es ist eine csv Datei) schauet so aus:
Zitat: |
Blisterprüfung CC-Cord 1
Artikelbezeichnung: Hedstroem Zeitstempel Prüf Ende: 2012.08.23_23_53_42
(article description) (report time:)
Artikel-Nr: V040373025045 Gesamte Pruefzeit: 0,46h
(article no.) (total testing time:)
Fertigungsauftrag 025691 Gesamte Fertigungsmenge: 201
(work order no.) (total manufacturing quantity)
Chargennummer: 025691 Anzahl Gutteile: 163
(lot no. job) (total quantity accepted parts)
Lotnr Stahl: 018514 Anzahl Schlechtteile: 38
(lot no. steel) (total quantity not accepted parts) |
und so hab ich deinen Code benutzt:
Es funktioniert tatsächlich=) aber gibt oben genannten Fehler, wie kann ich dann so machen, das Matlab mir nur "V040373025045" findet?
Und es sollen praktisch mehrere Dateien nach diesen Nummer durchgesucht werden.
Gruß
Dieter
Zuletzt bearbeitet von Balu am 26.09.2012, 08:38, insgesamt einmal bearbeitet
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 26.09.2012, 22:01
Titel:
|
 |
Hallo,
das Problem ist dann, dass mein (und auch dein) Code nach einem ; als Abschluss der Sequenz sucht.
Mal die Gegenfrage: der dich interessierende Teil beginnt mit V040373025045, wenn ich das richtig verstehe. Dann stellt sich die Frage: was genau ist der interessante Teil, insbesondere: wo hört er auf?
Grüße,
Harald
|
|
|
|
|
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 - 2025
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.
|
|