Verfasst am: 24.11.2011, 13:23
Titel: Werte aus *.txt auslesen
ich habe eine textdatei mit 2 spalten:
die werte darin sind mit einem tab getrennt. es sieht also so aus:
255 145
154 145
441 698
441 566
ich brauche jetzt den befehl der jeweils den untersten wert der jeweiligen spalte verwendet wird und als x und y definiert wird.
das heist bei meinem beispiel soll x jetzt 441 und y=566 sein. es kommen immer wieder neue werte in die spalte, deshalb muss matlab irgendwie immer den untersten wert nutzen.
ich weis das textread der auslesebefehl ist, aber mehr weis ich auch nich :\
kann mir da jemand helfen? bin auf dem gebiet matlab absoluter neuling...
Verfasst am: 24.11.2011, 14:36
Titel: Re: Werte aus *.txt auslesen
Hallo Heisenberg,
Das Einlesen von Text-Files wurde hier im Forum wiederholt besprochen. Eine Suche würde sich also lohnen. Das Lesen von "help textscan" wäre auch eine gute Idee.
Gruß, Jan
Heisenberg
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 24.11.2011, 14:58
Titel:
hab ich schon, aber so richtig geholfen hat es mir nicht, sonst hätte ich ja kein thread aufgemacht. was mir vor allem nich klar is, wie ich matlab sagen soll, dass er immer den letzten wert aus der spalte nehmen soll...
Du musst sowieso alles einlesen, um die letzte Zeile zu finden. Ich würde das File mit FOPEN öffnen und mit FSCANF die Werte einlesen. Zum Schluß kann man denn die letzte Zeile der Werte herauskopieren.
Gruß, Jan
Heisenberg
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 26.11.2011, 18:12
Titel:
ok habe eine recht simple lösung gefunden:
M=textread('C:\windows\Desktop\xy.txt');
x = M(end,1:1)
y = M(end,2:2)
einziges problem dass ich noch habe, in der ersten zeile steht text, also sollte erst ab der 2ten zeile gelesen werden, da ich sonst eine fehlermeldung in matlab bekomme...
wie kann ich die erste zeile überspringen?
zum einen: es funktioniert ja offensichtlich nicht.
Zum anderen sagt die Doku, dass man TEXTSCAN verwenden soll. Der Grund ist in solchen Fällen meist, dass der alte Befehl früher oder später abgeschafft werden wird, weniger flexibel oder langsamer ist.
Aber die Doku scheinst du ohnehin nicht angesehen zu haben, denn sonst wüsstest du, dass man - sowohl bei TEXTREAD als auch bei TEXTSCAN - das Format der zu lesenden Daten angeben muss, hier '%f'.
die x und y werte benutze ich für eine berechnung, wobei die ergebnisse in eine excel datei geschrieben werden.
gibt es nun die möglichkeit das matlab die berechnung ausführt sobald die x und y werte in meiner txt-datei geändert werden? also dass ich praktisch den "run" button nur einmal ausgeführen muss und dann alles "von alleine" automatisiert abläuft?
vielen dank schonmal.
Heisenberg
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 30.11.2011, 12:45
Titel:
ich versuche grade einen timer in mein programm einzubauen:
ich möchte dass mein programm erst abläuft, sobald eine bestimmte datei aktualisiert wurde.
mit folgendem befehl kann ich die uhrzeit der letzten aktualisierung auslesen:
d=dir('C:\windows\desktop\xy.txt');
datum=d.date
Ergebniss:
datum =
30-Nov-2011 10:14:27
wie kann ich jetzt mit einem timer eine abfrage starten, dass er z.b. alle 2s prüft ob die Datei aktualisiert wurde? und sobald es dann geschehen ist das programm ablaufen lässt?
Wenn die Datei innerhalb einer Sekunde mehrmals aktualisiert wird, kann es Probleme mit der Erkennung der Aktualisierung geben. Falls das relevant ist, bitte nochmal melden.
function checkFile(t, foo2, 'xy.txt', lastdate) %#ok<INUSL>
d = dir('xy.txt');
if ~strcmp(d.date, lastdate) disp('File was updated') % Process for processing new file goes here end set(t, 'TimerFcn',{@checkFile, 'xy.txt', d.date})% set new modification date
setze dich doch bitte mal mit der grundlegenden Idee von Funktionen auseinander. Der Sinn daran ist, dass du eben nicht im Code der Funktion Änderungen vornimmst, sondern nur im Aufruf.
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.