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

Datum bzw. Uhrzeit einlesen

 

Plotter
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 26.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.05.2010, 10:59     Titel: Datum bzw. Uhrzeit einlesen
  Antworten mit Zitat      
Hallo schon wieder!
Ich hab Suche zu benutzt, aber nix fundiges gefunden.

Ich möchte Datum (JJJ-MM-TT) bzw. Zeit (HH:MM:SS) als Vektor aus asc.Datei auslesen, klappt es aber nicht.

Das soll der Anfang sein:

fid = fopen ('test.asc');
C = textscan (fid,'%s','delimiter',',')
fclose(fid);

und wie soll es weiter gehen, wenn Datum in 1. Spalte bzw. Zeit in 2. Spalte ist Question
Private Nachricht senden Benutzer-Profile anzeigen


Fourier
Forum-Guru

Forum-Guru


Beiträge: 329
Anmeldedatum: 05.04.10
Wohnort: Karlsruhe
Version: 2009b
     Beitrag Verfasst am: 31.05.2010, 11:12     Titel:
  Antworten mit Zitat      
hallo,






Code:

C = textscan (fid,'%s%s','delimiter',',')


sollte klappen
Gruss
Private Nachricht senden Benutzer-Profile anzeigen
 
Plotter
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 26.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.05.2010, 12:05     Titel:
  Antworten mit Zitat      
ne, es finzt nicht, bekkome eine Meldug

Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space

und Programm bleibt hängen
Private Nachricht senden Benutzer-Profile anzeigen
 
quant82
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 97
Anmeldedatum: 30.04.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.05.2010, 12:08     Titel:
  Antworten mit Zitat      
wie groß ist denn deine input file und könntest du mal ein stück davon posten
Private Nachricht senden Benutzer-Profile anzeigen
 
Fourier
Forum-Guru

Forum-Guru


Beiträge: 329
Anmeldedatum: 05.04.10
Wohnort: Karlsruhe
Version: 2009b
     Beitrag Verfasst am: 31.05.2010, 12:34     Titel:
  Antworten mit Zitat      
am besten die ganze datei hochladen, wäre hilfreich
Private Nachricht senden Benutzer-Profile anzeigen
 
Plotter
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 26.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.05.2010, 12:57     Titel:
  Antworten mit Zitat      
die Datei (ASCII) sieht ungefär so aus:

es sind etwas über 100 000 Zeilen

file.JPG
 Beschreibung:

Download
 Dateiname:  file.JPG
 Dateigröße:  47.13 KB
 Heruntergeladen:  1234 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Fourier
Forum-Guru

Forum-Guru


Beiträge: 329
Anmeldedatum: 05.04.10
Wohnort: Karlsruhe
Version: 2009b
     Beitrag Verfasst am: 31.05.2010, 13:31     Titel:
  Antworten mit Zitat      
also wie ich sehe, es gibt viele spalten, du willst aber nur datum und zeit lesen. das sollte so gehen hat bei einem kleinen beispiel bei mir zumindest funktioniert.
Code:

C=textscan(fid,'%s%s %*f %*f %*f %*f','Delimiter',[' ',','])


gruss
Private Nachricht senden Benutzer-Profile anzeigen
 
Plotter
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 26.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.05.2010, 15:57     Titel:
  Antworten mit Zitat      
eigentlich habe ich Datum oder Zeit gemeint.... aber es funktioniert trotzdem nicht
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 31.05.2010, 16:50     Titel:
  Antworten mit Zitat      
Hallo,
Was funktioniert nicht, bitte auch Probleme/ Fehlermeldung sagen.

Also wenn immer noch OUT OF MEMORY bekommst, dann musst du deine Datei sequenziell verarbeiten

irgendwie so:
Code:

fid = fopen ('test.asc');
c=1;
bytes_per_row = length(fgetl(fid))+2;

fseek(fid,0,'eof');
row_numb = round(ftell(fid)/bytes_per_row);
fseek(fid,0,'bof');


t = zeros(1,row_numb);
while true
   row = fgetl(fid);  
   if row==-1
      break
   end
   t(c) = datenum(row,'yyyy-mm-dd HH:MM:SS');
   c=c+1;
end

fclose(fid);

%Zeit
datestr(t,'HH:MM:SS')

%Datum
datestr(t,'yyyy-mm-dd')
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Plotter
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 26.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.06.2010, 07:50     Titel:
  Antworten mit Zitat      
Spitze!!!! Genau das, was ich haben wollte! Vielen, vielen Dank!!!!

kurze Frage noch:

besteht eventuell die Mögligkeit die Berechnungszeit zu beschleunigen? es dauert eine Weile bis die Berechnung durch ist (hab noch größere Dateien).
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 01.06.2010, 10:15     Titel:
  Antworten mit Zitat      
Alternative dazu wäre TEXTSCAN, dort kann man ja eingeben wie viele Zeilen auf einmal man einlesen möchte

Code:

fid = fopen ('test.asc');
c=1;
bytes_per_row = length(fgetl(fid))+2;

fseek(fid,0,'eof');
row_numb = round(ftell(fid)/bytes_per_row);
fseek(fid,0,'bof');


t = zeros(1,row_numb);
while ~feof(fid)
   % hier kannst statt 100 auch 1000 Zeilen einlesen
   row = textscan(fid,'%s %*f %*f %*f %*f', 100, 'Delimiter', ',');
   row = row{:};
   t(c:c+length(row)-1) = datenum(row,'yyyy-mm-dd HH:MM:SS');
   c=c+length(row);
end

fclose(fid);

%Zeit
datestr(t,'HH:MM:SS')

%Datum
datestr(t,'yyyy-mm-dd')
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Plotter
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 26.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.06.2010, 11:41     Titel:
  Antworten mit Zitat      
ok, weiss ich bescheid. Danke noch mal!
Private Nachricht senden Benutzer-Profile anzeigen
 
Plotter
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 26.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.06.2010, 07:58     Titel:
  Antworten mit Zitat      
Hallo, ich möchte noch mal zu diesem Thema zurückkommen und zwar wenn ich Datum / Uhrzeit mit Angabe von Zeilen einlesen möchte und den Codec verwende, tritt bei mir ein fehler auf:

??? DATENUM failed.
Failed on converting date string to date number.

Error in ==> DTM at 16
t(c:c+length(row)-1) = datenum(row,'yyyy-mm-dd HH:MM:SS');


Code:

fid = fopen ('test.asc');
c=1;
bytes_per_row = length(fgetl(fid))+2;

fseek(fid,0,'eof');
row_numb = round(ftell(fid)/bytes_per_row);
fseek(fid,0,'bof');


t = zeros(1,row_numb);
while ~feof(fid)
   % hier kannst statt 100 auch 1000 Zeilen einlesen
   row = textscan(fid,'%s %*f %*f %*f %*f', 100, 'Delimiter', ',');
   row = row{:};
   t(c:c+length(row)-1) = datenum(row,'yyyy-mm-dd HH:MM:SS');
   c=c+length(row);
end

fclose(fid);

%Zeit
datestr(t,'HH:MM:SS')

%Datum
datestr(t,'yyyy-mm-dd')
 



Woran könnte es liegen?

Gruß Plotter
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 30.06.2010, 09:56     Titel:
  Antworten mit Zitat      
Hallo

Wahrscheinlich ist Datumsformat in String anders als der Format, welcher an DATENUM übergeben wird.
Da muss du reinschauen, setzte entweder Breakpoint und kontrolliere Schrittweise, oder aktiviere in Matlab Menu-Punkt Debug->Stop if Errors/Warnings.
Private Nachricht senden Benutzer-Profile anzeigen
 
Plotter
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 26.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.06.2010, 11:39     Titel:
  Antworten mit Zitat      
stimmt, das Format ist anders.

wie macht man, das das Format bei der Übergabe übereinstimmt?
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



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.