kommt. Bei der Vorversion meines Programmes war dies allerdings nicht der Fall, weswegen es nicht an der fehlenden Toolbox liegen kann.
Tippe ich im Workspace "which regexp" ein findet MATLAb auch einen Pfad, nämlich
Bin mit meinem Latein jetzt leider echt am Ende. Komischerweise lief das Programm in der Uni, auf meinem Heimrechner aber nicht....
Hier der Code:
Code:
%%.ps4 importieren
fid = fopen('/Users/.............../500.ps4','r');
if fid < 0, error('Das File ist nicht vorhanden');
end
txt = fscanf(fid, '%s'); % Einlesen der Textdatei als String
schau doch mal (ggf. mit dem Debugger), was der Wert von tline ist, wenn das Programm aussteigt. Vermutung: es konnte die Datei nicht lesen oder ist an ihr Ende gelangt. Könnte man mit isempty, angewandt auf tline, oder mit feof, angewandt auf fid, testen.
%%.ps4 importieren
fid = fopen('/Users/.........../1_1.ps4','r');
if fid < 0, error('Das File ist nicht vorhanden');
end
txt = fscanf(fid, '%s'); % Einlesen der Textdatei als String
Die Variable txt wird nicht genutzt bei dir. Wenn du diese Zeile löschst(du brauchst sie ja eh nicht) dann funktioniert der Code wieder. Ich bin mir nicht sicher warum fscanf da was verändert, aber es scheint so, dass das das Problem ist.
Weiterhin hast du mehrmals ein fclose drin. Dabei brauchst du nur einmal die Datei schließen.
Ich habe den Code mal glatt gezogen:
Code:
%%.ps4 importieren
fid = fopen('test.txt','r');
if fid < 0 error('Das File ist nicht vorhanden');
end
%%%%%%%%%%%%%%
names = {'orbit', 'frame', 'time', 'tape', 'date'};
for i = 1: 10
tline = fgetl(fid);
first_word = regexp(tline, '[a-z]+', 'match', 'once');
ifismember(first_word, names)
value = regexp(tline, '([A-Z]|[0-9]+)(.|:)?[0-9]+((.|:)?[0-9]+|\s?[A-Z]*)', 'match', 'once');
informations.(first_word) = value;
end end
%%%%%%%%%%%%%%%%
satellite2 = 'ERS-2';
satellite = regexp(tline,'(ERS-(\d*))','tokens'); % Satellit suchen
satellite = [satellite{:}];
ifstrcmp(satellite, satellite2) >=1
satellite = 'ERS2'; % Satellitenabkürzung formatieren else
satellite ='ERS1';
end
first_word ist jetzt "ages" was von "%%Pages: (atend)" kommt, und der einzige Eintrag in tline ist.
value ist gar nicht vorhanden. Demnach kann MATLAB das file also nicht richtig einlesen.
Hast du eine Idee, und ich hoffe wirklich, dass es das letzte Mal ist und ich die ganze Geschichte abhaken kann!!
Kann hier leider keine .ps4 Datei hochladen...
Vielen Dank dafür!
Man es tut mir echt Leid dir nochmal schreiben zu müssen....
Kein Problem. Und nebenbei, du schreibst nicht nur mir sondern dem ganzen Forum
Zitat:
Das Problem ist nur, dass früher in txt, auch wenn ich es nicht benützt habe, die ganze Datei als .txt vorhanden war.
Das verstehe ich nicht. Wieso ist das ein Problem wenn du es eh nie benutzt?? Wenn ich etwas nicht brauche entferne ich es und es ist somit auch kein Problem.
Zitat:
first_word ist jetzt "ages" was von "%%Pages: (atend)" kommt, und der einzige Eintrag in tline ist.
Vielleicht, hätte ich den Code kommentieren sollen, oder du die Hilfe zu den Befehlen lesen.
fgetl gibt dir immer nur eine Zeile aus der Textdatei zurück. Das heißt, dass du mit diesem Befehl immer nur eine Zeile in tline hast. Deswegen musst du das in einer Schleife abhandeln.
Da ich die ps4 Datei nicht kenne, habe ich einfach mal eine Schleife mit 10 Durchläufen gemacht. Ich nehme einfach an, dass in den ersten 10 Zeilen der Datei nicht die gesuchten Begriffe stehen und somit keine Werte ausgefiltert werden.
Deswegen musst du wohl eine Endlosschleife programmieren mit entsprechender Abbruchbedingung.
In der Hilfe zu fopen hast du ein Beispiel welches du direkt anwenden kannst.
Ist es üblich hier den finalen Programmcode zu posten?
Auf jeden Fall wäre es hilfreich! Jan
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
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.