Verfasst am: 23.07.2008, 15:35
Titel: .txt in Matlab einlesen und Array erstellen
Moin moin,
ich habe folgendes Problem:
Ich habe eine .txt Datei und will aber viel lieber ein Array haben^^
Ich bräuchte einen Code, der den Benutzer nach dem Dateinamen fragt, überprüft ob es die Datei gibt und sie einließt.
Dann sollen aus dieser Datei Werte ausgelesen werden.
Ich habe mal eine Datei als Anhang eingefügt, damit ihr wisst wie so ding aussieht.
Erst kommen Header Zeilen (es können unterschiedlich viele sein!!) und dann kommen die wichtigen Daten, es sind immer 1200 Messwerte die zu einer Messung gehören. Danach folgt ein "Endrec" und es folgen die nächsten header zeilen.
Jede Messreihe soll in eine Spalte des selben Arrays kommen.
Also REC 1 in die erste spalte REC 2 in die zweite spalte und so weiter.
Achso auch die Anzahl der RECs in den txts ist unterschiedlich!!
Moin moin,
und habt ihr schon ne Idee? mir gehts halt hauptsächlich um das übertragen der Daten in ein Array da man sonst stundenlang nur mit der umformatierung beschäftigt ist.
Das mit dem dateinamen eingeben ist nicht so wild, denn kan man sonst auch im skript einfügen.
Hat einer von euch schon was raus bekommen?
Freundliche und Dankene Grüße
Co
Co
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 25.07.2008, 09:45
Titel:
Achso, wenn es einfacher ist das zu ne Excel datei zu machen ist das auch ok, ich brauche die daten nur in Tabellenform mit jedem Rec in einer neuen Zeile.
überprüfen ob es sich um eine Zahl oder um Text handelt (den Text wegwerfen, die Zahl in ein Array schreiben). Um die Werte in eine Matrix zu speichern, musst du irgendwas finden. Da bietet sich zB EndRec an, falls
Erstmal danke dib0r, hast mir echt schon geholfen mit deinen Tipps.
Ich habe nun soweit mal code geschrieben nur gibt ein paar probleme. Ich habe keine ahnung wie ich das Array ansprechen soll, bzw. ob das so funktioniert.
Aus C ken ich das so das man ein Mehrdimensionales Array über X udn Y Indexzahlen anspricht. Da aber der REGEXP "[0-9] nie zutrifft konnte ich das nicht nicht testen
Wenn ich den Code laufen lasse, bekomme ich zwar in tline alle Zeilen einzeln aufgelistet, aber die abfrage über
klappt leider nicht. Ich würde gerne das abgefragt wird ob die ersten zwei zeichen entweder eine zahl zwischen 0-9, ein komma oder ein minuszeichen sind.
Die nächste abfrage ob
tline = EndRec
funktioniert auch nicht da sonst s um einen erhöt werden müsste.
interessanterweise funktioniert aber die letzte abfrage ob
tline = EndData
ist. Denn "fertig " wird ausgegeben.
Vielleicht kann mir da wer sagen was ich falsch gemacht hab.
auch nicht. Scheint ich habe einen groben Syntaxfehler oder so was, ich bekomme keine fehler meldung aber selbst wenn ich eine txt oeffne die nur EndRec in jeder zeile hat, wird das nicht gefunden.
Wäre echt super wenn mir da wer helfen könnte.
Muss das zum laufen bekommen.
Habe auch schon mit switch tline
und case 'EndRec' versucht aber auch da bekomme ich keinen treffer.
Selbst wenn ich am Dateiende bin und tline nur noch -1 enthält, bekomme ich mit case '-1' keinen treffer.
ich hab keinen schimmer warum das nicht läuft.
gruß co
p.s. bei fragen könnt ihr auch gerne über ICQ (312045285) msgs schreiben.
Kommas werden als "Beistriche" erkannt, und nicht als Dezimaltrenner (hm, keine Ahnung wie das Fachwort heisst). Das sind Punkte unter Matlab. Du musst also die Kommas "ersetzen", z.B. mit
Noch mal Danke Dib0r,
hast mir echt geholfen.
Ich habe nun nur noch ein Problem, wenn ich den code laufen lasse, dann öffnet mir Matlab immer das
"Window Design & Analysis tool" das wil ich aber gar nicht haben^^
Weiß einer vielleicht wie ich das noch weg bekomme?
geladen. An welcher Stelle im Code öffnet es sich?
MfG
Co
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 30.07.2008, 13:07
Titel:
also das fenster öffnet sich immer dann wenn tline bei zeile 6 der headerzeilen:
Window duration 30,00 ms
angekommen ist. Mein suchenundersetzten macht daraus dann
Window duration 30.00 ms
weil er des komma durch ein punkt ersetzt.
Ist das vill. ein Matlabbefehl? die matlab konsole gibt mir folgendes als fehler meldung :
Warning: Could not find an exact (case-sensitive) match for 'Window'. D:\BachelorThesis\Progs\Matlab\toolbox\signal\signal\window.m is a case-insensitive match and will be used instead. You can improve the performance of your code by using exact name matches and we therefore recommend that you update your usage accordingly. Alternatively, you can disable this warning using warning('off','MATLAB:dispatcher:InexactMatch').
> In str2num>protected_conversion at 81
> In str2num at 46
> In cotest at 25
Initializing Window Design & Analysis Tool ..... done.
also cotest ist das script selber.
gibts da ne überschneidung die ich irgendwie aufheben muss, von einem befehl oder einer funktion?
Danke für die Hilfe Dib0r
Gibts eigentlich ne Möglichkeit diese Hilfsvariablen wie comma und dp noch während der laufzeit des Programms wieder ausm workspace zu entfernen? also das ich am ende sowas wie
auf. Alle Variablen innerhalb der Funktionsdeklaration werden dann nur temporär angelegt und nach Verlassen der Funktion wieder gelöscht (ausser du verwendest globale Variablen).
MfG
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.