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

Blutiger MatLab-Anfänger benötigt Hilfe

 

luthielle
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 03.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.05.2010, 13:28     Titel: Blutiger MatLab-Anfänger benötigt Hilfe
  Antworten mit Zitat      
Hallo zusammen,
ich habe zuvor noch nie mit MatLab gearbeitet, muss nun aber für meine Bachelorarbeit Daten mit MatLab einlesen und plotten.

Die Daten sind im ASCII - Format (also .txt - Datei)
Die Form der Daten ist etwa (ohne Header):

27.03.2005 15.493 5.93
30.04.2005 15.938 4.98
25.05.2005 15.634 4.34
...

Also Datum TAB Messwert TAB Fehler TAB .... usw

Zum Einlesen habe ich den Befehl textread verwendet:

>> [datum, hoehe, fehler]= ...
textread('datei.txt', '%s %f %f')

Als Output habe ich dann 3 Vektoren bekommen, wobei das Datum als String eingegeben ist.

Mein Problem ist nun, dass ich den Vektor "datum" nicht mit datenum formatieren kann. Ich habe folgenden Befehl ausprobiert:

>> dates = datenum(datum, 'dd.mm.yyyy')

Dabei bekomme ich nur den Fehler: ??? Error using ==> datevec
Cannot parse date 27.08.2002

Ich habe dann überlegt, dass es vllt. an dem Format des Datums liegt und habe dieses umgeformt mit

>> dates = strrep(datum, '.', '/')

Versuche ich nun wieder
>> dates2 = datenum(dates,'dd/mm/yyyy')

bekomme ich den Fehler
??? Error using ==> datevec
27 is too large to be a month.


Crying or Very sad

Was kann ich tun, damit MatLab meinen Datums-Vektor richtig einliest und konvertieren kann, kann ich irgendwie das Format 'dd/mm/yyyy' umformen in 'mm/dd/yyyy' ?

Oder gibt es eine andere Möglichkeit, hier weiter zu kommen?


Ich hoffe ihr könnt mir helfen.

Rolling Eyes
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 04.05.2010, 14:22     Titel:
  Antworten mit Zitat      
Hallo

kannst du bitte dein ASCII-File anhängen, weil ich kann den Fehler nicht reproduzieren.

z.B das funktioniert bei mir:
Code:

 str = sprintf(...
['27.03.2005 15.493 5.93\n',...
'30.04.2005 15.938 4.98\n',...
'25.05.2005 15.634 4.34\n',...
'27.08.2002 15.938 4.98\n'] )

 [datum, hoehe, fehler]=strread(str,'%s %f %f')

dates = datenum(datum, 'dd.mm.yyyy')
 
Private Nachricht senden Benutzer-Profile anzeigen
 
luthielle
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 03.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.05.2010, 14:26     Titel:
  Antworten mit Zitat      
hallo denny,
danke erstmal für deine antwort. vllt. liegt es auch an meiner matlab-version, ich nutze 6.5.0 ...

hier ist das ascii file:

sciawatukosek.txt
 Beschreibung:

Download
 Dateiname:  sciawatukosek.txt
 Dateigröße:  1.59 KB
 Heruntergeladen:  418 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
luthielle
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 03.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.05.2010, 14:29     Titel:
  Antworten mit Zitat      
wenn ich deinen code eingebe, erscheint bei mir:


??? Error using ==> datevec
Cannot parse date 27.03.2005

Error in ==> C:\MATLAB6p5\toolbox\matlab\timefun\datenum.m
On line 48 ==> case 2, n = datenummx(datevec(arg1,arg2));
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 04.05.2010, 14:48     Titel:
  Antworten mit Zitat      
Okay womöglich kann es an Version liegen, versuch es mal so:

Code:

[datum, hoehe, fehler] = textread('sciawatukosek.txt','%s %f %f')

dates = zeros(size(datum))

for k=1:length(dates)
  dates(k) = datenum(datum{k}, 'dd.mm.yyyy');
end


 
Private Nachricht senden Benutzer-Profile anzeigen
 
luthielle
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 03.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.05.2010, 14:51     Titel:
  Antworten mit Zitat      
Sad Leider wieder der Fehler:

??? Error using ==> datevec
Cannot parse date 27.08.2002

Error in ==> C:\MATLAB6p5\toolbox\matlab\timefun\datenum.m
On line 48 ==> case 2, n = datenummx(datevec(arg1,arg2));

dates sind auch alle 0
Private Nachricht senden Benutzer-Profile anzeigen
 
luthielle
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 03.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.05.2010, 14:54     Titel:
  Antworten mit Zitat      
ich habe mir übergangsweise schon damit beholfe, dass ich das format der daten in excel (ja ich weiß, böse ^^) umgeformt habe von dd.mm.yyyy in mm.dd.yy ... wenn ich dann . gegen / ersetze, kann ich mir zumindest einen datevec erstellen und darauf dann datenum anwenden...
das ist aber nicht die eleganteste lösung... es muss doch eine andere möglichkeit dafür geben?
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 04.05.2010, 15:01     Titel:
  Antworten mit Zitat      
Okay, noch ein Versuch:

Code:

[datum, hoehe, fehler] = textread('sciawatukosek.txt','%s %f %f')

dates = zeros(size(datum));

for k=1:length(dates)
  str       = strrep(datum{k},'.',' ');
  tmp_date = str2num(str);
  dates(k) = datenum([tmp_date(end:-1:1) 0 0 0]);
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
luthielle
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 03.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.05.2010, 15:09     Titel:
  Antworten mit Zitat      
Shocked Vielen Dank !! Laughing

Es erscheint kein Fehler mehr Cool

Für die dates bekomme ich auch die selben Werte wie durch meinen Umweg, nur wesentlich einfacher und eleganter Wink

Ich verstehe zwar die Hälfte der Befehle noch nicht, aber die werde ich mir gleich erstmal anschauen.

Ohne dich wäre ich aufgeschmissen gewesen
Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
luthielle
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 03.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.05.2010, 12:19     Titel:
  Antworten mit Zitat      
es lag tatsächlich an der version... ich habe nun eine aktuellere version von matlab und da funktioniert auch
Code:
dates = datenum(datum, 'dd.mm.yyyy')
ohne probleme... deprimierend ist das ja schon Smile
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.