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

Problem mit dem Laden von Daten

 

Krischi
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 05.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.12.2008, 12:56     Titel: Problem mit dem Laden von Daten
  Antworten mit Zitat      
Hi,

ich benutze die Funktion load um Daten in Matlab zu laden. Leider sind ein paar der Daten, nämlich die der gemessenen Zeit, als Uhrzeit angegeben, d.h. im Format: Stunde.Minute.Sekunde.Zehntelsekunde.

Der Befehle
time = name(:,2);
lädt nur die Stunden.

Wie kann ich die vollständige Uhrzeit laden? Die Daten sind in einer .dat Datei gespeichert. Es sind mehrere Hundert, d.h. manuell ändern kommt nicht in Frage.

Vielen Dank im Vorraus!

Krischi
Private Nachricht senden Benutzer-Profile anzeigen


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 18.12.2008, 13:22     Titel:
  Antworten mit Zitat      
Das sind natürlich noch recht dürftige Informationen... Was ist das für eine Datei? ASCII? Excel?

Genrerell ist das importieren von Zeit- und Datumsinformationen in MATLAB etwas tricky - für Deutsche. Ich empfehle die Informationen erst einmal als Character Array zu importieren und dann schlaue - eigene - Algorithmen darauf loszulassen. Wenn man erst Mal eine zuverlässiges serial date in MATLAB hat, sind Umrechnungen aber zuverlässig.
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Krischi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 05.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.12.2008, 13:27     Titel:
  Antworten mit Zitat      
Ja es ist eine ASCII Datei. Ein Beispiel der Uhrzeit: 16:37:55.4
Un der Doppelpunkt ist das Problem, da Matlab wohl alles bis zum Doppelpunkt als eigene Spalte interpretiert.
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 18.12.2008, 13:36     Titel:
  Antworten mit Zitat      
Da ist ziemlich sicher "Handarbeit" nötig. 'HH:MM:SS' ist zwar ein Standardformat, die Sekundenbruchteile aber nicht.
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.12.2008, 13:58     Titel:
  Antworten mit Zitat      
Es gibt aber Tausendstel Sekunden, hilft das?
Code:
str='16:37:55.4'
dn=datenum(str)
ds1=datestr(dn,'HH:MM:SS')
ds2=datestr(dn,'HH:MM:SS.FFF')
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 18.12.2008, 14:25     Titel:
  Antworten mit Zitat      
Ja, das ist ein "Free-Form Date Format Specifier". Und da die Daten scheinbar ja einen Dezimalpunkt und kein Dezimalkomma haben dürfte es gehen.
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Krischi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 05.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.12.2008, 14:34     Titel:
  Antworten mit Zitat      
Ok, aber wie kann ich auf die Daten zugreifen? Wie kann ich diesen "Format Specifier" dazu benutzen die Daten aus der .dat Datei zu laden?

Ich habe wenig bis keine Erfahrung mit Matlab..sorry.
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 18.12.2008, 14:56     Titel:
  Antworten mit Zitat      
OK, ich stochere noch ein wenig im Nebel. Der Code sind doch prima aus? Ich spekuliere mal: Ist gewünscht nur an die Sekundeninformationen zu kommen? Das geht dann z. B. so:

Code:

str='16:37:55.4' ;
dn=datenum(str)
v=datevec(dn);
s=v(6)
 
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Krischi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 05.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.12.2008, 15:13     Titel:
  Antworten mit Zitat      
Ok, es kann sein dass wir komplett aneinander vorbei reden oder ich einfach nichts kapiere (wahrscheinlicher).

Den Code den ihr vorschlagt kann man benutzen um die Informationen bzgl. der Stunden, Minuten, Sekunden usw. herauszulesen aus der kompletten Zeitinfo.

Ich habe aber im Moment gar keinen Zugriff auf die komplette Info, also auf hh:mm:ss.0.s !
Diese Info ist in einer .dat Datei. Ich versuche einzelnen Spalten mit der Funktion load zu extrahieren. Das funktioniert aber nicht, wegen dem Doppelpunkt in der Zeitinfo. Ich bekomme nur die Stundenangabe. WEnn ich dann die nächste Spalte lesen will, bekomme ich aber nicht die Minuten, sondern andere Daten. Hier ein Bsp zweier Reihen aus meiner Dat Datei:

12/17/08 16:34:56.4 1.0345
12/17/08 16:34:57.4 1.1345

D.h. der Befehl time = filename(:,2) liefert als Ergebniss
16
16

Der Befehl y = filename(:,3) liefert als Ergebniss
1.0345
1.1345
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.12.2008, 15:26     Titel:
  Antworten mit Zitat      
Wenn genau diese zwei Zeilen
Zitat:
12/17/08 16:34:56.4 1.0345
12/17/08 16:34:57.4 1.1345

in einer Datei zeit.dat gespeichert sind kannst Du die z.B. so auslesen:
Code:
fid=fopen('zeit.dat');
data=textscan(fid,'%s %s %d');
fclose(fid);
data{1,2} % Datum als String
dn=datenum(data{1,2}) % als serial date number
datestr(dn,'HH:MM:SS.FFF') % als char array

Ansonsten geht es mir wie Andreas. Wo hakt es konkret?
 
Krischi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 05.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.12.2008, 15:51     Titel:
  Antworten mit Zitat      
Genau diese dat Datei und der Code liefern mir:

ans =

'Arial;}}'
'Msftedit'
'12/17/08'
'1.0345\par'
'16:34:57.4'
''
''

??? Error using ==> datenum at 174
DATENUM failed.

Error in ==> readandplotdata at 7
dn=datenum(data{1,2}) % als serial date number

Caused by:
Error using ==> datevec at 219
Failed to lookup month of year.

Was mache ich denn falsch? Ich kann ja scheinbar nicht einmal einen Code kopieren, einfügen und ausführen.

A pro pro: Vielen Dank für eure Mühe!
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.12.2008, 15:58     Titel:
  Antworten mit Zitat      
Vermutlich sieht die .dat-Datei doch etwas anders aus als Du gesagt hast.
Poste mal die ersten paar kompletten Zeilen davon.
 
Krischi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 05.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.12.2008, 16:02     Titel:
  Antworten mit Zitat      
Nach diesem Teil deines Codes

fid=fopen('zeit.dat');
data=textscan(fid,'%s %s %d');
fclose(fid);

müsste man doch mit

data(1)

das folgende als Antwort bekommen, oder:

12/17/08
12/17/08

Ich bekomme aber:

>> data(1)

ans =

{8x1 cell}

Das kann ja wohl nicht sein. Woher kommen denn da bitte acht mal eins Matrix? Es sind doch nur zwei Werte...
Private Nachricht senden Benutzer-Profile anzeigen
 
Krischi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 05.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.12.2008, 16:04     Titel:
  Antworten mit Zitat      
Das ist die dat Datei. Ich habe sie mit Word Pad geöffnet.

12/17/08 16:34:56.4 1.0345
12/17/08 16:34:57.4 1.1345

AHHHH jetzt öffne ich sie mit Notepad und siehe da:

{\rtf1\ansi\ansicpg1252\deff0\deflang1030{\fonttbl{\f0\fswiss\fcharset0 Arial;}}
{\*\generator Msftedit 5.41.15.1515;}\viewkind4\uc1\pard\f0\fs20 12/17/08 16:34:56.4 1.0345\par
12/17/08 16:34:57.4 1.1345 \par
}

Das ist wohl das Problem...
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.12.2008, 16:10     Titel:
  Antworten mit Zitat      
Ja, das ist das Problem.
Entweder bringst Du Matlab bei, rtf-Dateien zu lesen (vielleicht findest Du was im FileExchange, oder vielleicht kann es das auch schon) oder Du speicherst die Datei als (unformatierte) txt-Datei ab.
 
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.