WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

bestimmte Zeilen aus .txt data aussuchen

 

caroline
Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 26.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.10.2012, 11:46     Titel: bestimmte Zeilen aus .txt data aussuchen
  Antworten mit Zitat      
Hallo!

Ich habe eine große .txt datei (Messungen). Diese datei ist z.B folgendermaßen aufgebaut:


Date Time Messung1 Messug2 .........

1/10/2012 05:20 1.22 1.33 .........

3/10/2012 1:28 22 25 .........

3/10/2012 4:30 50 70 ............
.....
......
.......
......
.....



Ich möchte aus dieser Datei nur bestimmte Messungen (nach Datum und Zeit) selektieren und am besten in anderem file (txt oder m file ) speichern.

Ich komme nicht darauf wie ich Datum und Zeit als Suchparameter in Matlab benutzen kann.

Ich freue mich auf eure Hilfe!
Danke,
Caroline
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 27.10.2012, 14:15     Titel: Re: bestimmte Zeilen aus .txt data aussuchen
  Antworten mit Zitat      
Hallo caroline,

Zitat:
Ich möchte aus dieser Datei nur bestimmte Messungen (nach Datum und Zeit) selektieren und am besten in anderem file (txt oder m file ) speichern.

Was genau bedeutet "nach Datum und Zeit selektieren"? Möchtest Du ein bestimmtest Datum find (dann STRNCMP), oder geht es um die Auswahl von Intervallen zwischen zwei Zeiten? Sind die gesuchten Zeiten garantiert vorhanden, oder soll die nächst liegende / vorhergehende /nachfolgende Zeit genommen werden?

Bitte erkläre noch, was Du bisher versucht hast und welche Probleme auftraten. Konkrete Fragen liessen isch deutlich einfacher beantworten.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
caroline
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 26.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.10.2012, 10:10     Titel: text datei
  Antworten mit Zitat      
Danke für die Antwort.

Ich möchte bestimmte Messungen Nach datum und Uhrzeit aussuchen. (ich möchte nur bestimmtes Datum in bestimmte Uhrzeit). Das Datum ist sicher in dem Datei vorhanden. die Uhrzeit vielleicht nicht. Als Lösung, den nächten Zeitpunkt nehmen.

Ich hab so ein find funktion gefunden, oder ich habe an for schleife gedacht.

Bis jetz nicht erfolgreich.

Danke für die Hilfe
Caroline
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 28.10.2012, 18:58     Titel: Re: text datei
  Antworten mit Zitat      
Hallo caroline,

Um nach einer Zeit zu suchen, die eventuell gar nicht vorhanden ist, müssen die Zeit-Strings ins DATEVEC-Format transformiert werden: Also '1/10/2012 05:20' nach [2012 10 1 5 20 0]. Dann lässt sich leicht danach suchen.
Zunächst muss also die Datei eingelesen werden, wozu sich TEXTSCAN oder auch FILEREAD+REGEXP(Str, '\n', 'split') eignet. In letzterem Fall braucht man noch ein SSCANF, um die einzelnen Datums/Zeit und Werte zu extrahieren.
Das Suchen nach bestimmten Zeiten geht danach entweder per FOR-Schleife und FIND, oder wenn Du statt DATEVEC das DATENUM-Format verwendest auch mit einer Interpolation - leider nicht mit INTERP1, da es hier nur die methode "nearest" gibt, aber nicht "previous".

Ich weiß, dass dies nur keline Häppchen sind, deren Sinn sich nicht auf Anhieb erschließen wird. Aber vielleicht reicht es um zu beginnen und danach konkrete Fragen zu stellen, die sich dann viel einfacher beantworten lassen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
caroline
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 26.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.10.2012, 11:45     Titel:
  Antworten mit Zitat      
Hallo zusammen,

Ich habe mehrere txt datein (printout_113....bis.....Printout_708). Als beispiel habe ich die erste datein angehängt.

Diese files habe ich in einem file ''data'' gepackt.

ich möchte jetzt die spalte data{i,1}{1} für all i's in einem Vektor (DATUM) speichern.

Wie kann man das in matlab machen?


Code:

for i=113:708
 
fileID = fopen(['ExtractedPrintout_'  num2str(i) '.txt']);

data{i,1} = textscan(fileID, '%s %s %s %d %d %d %d %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f ');
 fclose(fileID);
 
 
end





ich habe das probiert
Code:
date(i)= data{i,1}{1};


aber irgendwie klappt es nicht.

Danke
Caroline

ExtractedPrintout_113.txt
 Beschreibung:

Download
 Dateiname:  ExtractedPrintout_113.txt
 Dateigröße:  675.01 KB
 Heruntergeladen:  405 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
caroline
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 26.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.10.2012, 11:50     Titel:
  Antworten mit Zitat      
Hallo nochmal

Ich habe das Problem so gelöst

Code:
DATUM{i,1}=data{i,1}{1}



Aber für jede Korrektur oder Optimierung wäre ich dankbar
Danke
Private Nachricht senden Benutzer-Profile anzeigen
 
caroline
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 26.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.10.2012, 14:04     Titel: Find date, time
  Antworten mit Zitat      
Hallo!

Ich hab es immer noch nicht geschafft bestimmte messungen mit bestimmten datum und Uhrzeit auszusuchen.

in dem Txt file (oben), zb Die folgenden Messungen aussuchen:

07.08.2012 um 16:32
08.08.2012 um 15:00
.....
....
..

Ich will 140 Messungen in bestimmtem Datum und Uhrzeit aussuchen.

Danke Euch
Caroline
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.10.2012, 14:25     Titel:
  Antworten mit Zitat      
Hallo,

Jan hat dir ja Vorschläge gemacht. Was genau hast du versucht, was genau hat daran nicht funktioniert?

Ich würde die Datum/Zeit-Information nehmen und mit DATENUM konvertieren. Dann kann man gut < und > nutzen, um die Datumsangaben mit einem Referenzdatum abzugleichen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
caroline
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 26.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.10.2012, 15:41     Titel:
  Antworten mit Zitat      
Danke für die Antwort,

Ich habe es noch nicht geschafft die sortiermethode einzubauen.
ich habe über datenum gelesen, aber ich habe noch keinen Ansatz gefunden.


Danke



Code:
formatIn='dd.mm.yyyy';

for i=113:115
 
fileID = fopen(['ExtractedPrintout_'  num2str(i) '.txt']);

data{i,1} = textscan(fileID, '%s %s %s %d %d %d %d %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f ');
 fclose(fileID);
 
  time{i,1}=data{i,1}{2};

 datee{i,1}= data{i,1}{1};
 
 
 
 r{i,1}=data{i,1}{23};  
 
 s{i,1}=data{i,1}{15};
 
 
  p{i,1}=data{i,1}{9};
  a{i,1}=data{i,1}{8};
 
 
end
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.10.2012, 17:09     Titel:
  Antworten mit Zitat      
Hallo,

ein Nachteil davon ist, dass du die Daten zu jeder Zeit dann getrennt hast. Ist das deine Absicht?

Ich würde etwas der Art probieren:
Code:
numdates{i,1} = datenum(datee{i,1}) + datenum(time{i,1})
[~, ind] = min(abs(numdates-datenum('07.08.2012 16:32')))


Natürlich ist bei datenum dann noch jeweils das passende Datumsformat anzugeben.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
caroline
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 26.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.10.2012, 12:27     Titel:
  Antworten mit Zitat      
Hallo!

Warum bekomme ich mit dem Befehl

%
formatIn1='HH:MM:SS'
datenum(time{i,1}, formatIn1)% die gleiche serielle nummmer für alle zeiten?
gibt es andere Funktion für die Zeit?

Danke
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.10.2012, 13:42     Titel:
  Antworten mit Zitat      
Hallo,

ist es wirklich genau dieselbe Zahl? Verwende mal
Code:


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 30.10.2012, 15:41     Titel:
  Antworten mit Zitat      
Hallo caroline,

Crossposting, also eine Frage in mehreren Foren gleichzeitig zu posten, ist für die Antwortenden ein Zusatzaufwand und verwirrend. Wenn in einem Forum eine Antwort gepostet wird, muss man sich doch im anderen keinen Arbeit mehr damit machen, oder? Wenn es wirklich nötig ist, poste jeweils Links zu den anderen Fragen, z.B. http://www.mathworks.com/matlabcent.....-with-time-in-time-vector.

Danke, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
caroline
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 26.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.10.2012, 09:34     Titel: Das stimmt.
  Antworten mit Zitat      
Das stimmt, aber manchmal kommt man nicht schneller weiter als Neuling!
und das ärgert. ich hoffe du verstehst es.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.10.2012, 12:32     Titel:
  Antworten mit Zitat      
Hallo,

das entscheidende ist für mich vor allem, dass zeitnah gepostet wird, wenn sich eine Frage erledigt hat oder anderweitig (z.B. über ein anderes Forum) beantwortet wurde. Die beste Möglichkeit dafür ist, wie von Jan vorgeschlagen, ein Link zu anderen Foren, in denen die Frage gestellt wurde - aktueller gehts dann nicht.
Ansonsten beschäftigen sich Leute hier unnötig mit Fragen, die nicht mehr aktuell sind - und das muss bei allem Verständnis für den Fragesteller nun wirklich nicht sein.
Langfristig kommt man als Neuling wohl am schnellsten voran, wenn man sich systematisch (über ein Buch oder eine Schulung) einarbeitet anstatt sich von Problem zu Problem zu hangeln.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.