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

Bezgsdatum erstellen

 

BoWallace
Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 26.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.07.2013, 09:06     Titel: Bezgsdatum erstellen
  Antworten mit Zitat      
Hallo,

ich habe folgendes Problem:

Ich habe eine Zeitreihe, bei der ich für den ersten Zeitpunkt ein Bezugsdatum erstellen möchte.

Nehmen wir mal an, ich habe folgende Zeitreihe:
Code:
Date =
16-May-2013 07:07:34
16-May-2013 07:08:10
16-May-2013 07:08:35
21-May-2013 09:55:31
23-May-2013 08:22:54
23-May-2013 08:23:14


Dann möchte ich als Bezugspunkt den
Code:
16-May-2013 17:30:00
einstellen.
Meine Gedanke:
Code:
FirstDay    = datenum([datestr(Date(1), 'dd.mm.yyyy') ' 17:30'])


Problem: Wandele ich danach mittels
Code:
wieder um, erhalte ich
Code:
01-Jan-2013 17:30:00
.

Jemand eine Idee?
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: 10.07.2013, 10:02     Titel: Re: Bezgsdatum erstellen
  Antworten mit Zitat      
Hallo BoWallace,

Du hast vergessen zu erklären, welches Endergebnis Du denn gerne hättest. Die gezeigten Befehle erzeugen genau das, was man auch erwarten kann. Wo liegt also das Problem?

Zitat:

Code:
Date =
16-May-2013 07:07:34
...

Hier muss man nun erraten, ob das eine CHAR-Matrix oder ein Cell-Array ist. Bitte poste deshalb immer validen Matlab-Code im Forum, der per Copy&Paste im Command-Window lauffähig ist. Je weniger man raten muss, desto einfacher und passender ist die Antwort.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 26.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.07.2013, 11:37     Titel:
  Antworten mit Zitat      
Ich habe die Zeitreihe
Code:
Date =
14-Nov-2012 16:07:40
16-Nov-2012 08:42:31
16-Nov-2012 09:19:38
16-Nov-2012 09:20:47
16-Nov-2012 15:29:27
20-Nov-2012 15:15:20
23-Nov-2012 12:04:24
27-Nov-2012 08:37:42
27-Nov-2012 10:52:39
28-Nov-2012 11:19:31
30-Nov-2012 13:37:34
07-Dec-2012 16:25:33
11-Dec-2012 16:25:08
19-Dec-2012 09:44:29
19-Dec-2012 10:27:44
28-Jan-2013 09:14:52
28-Jan-2013 09:15:18
28-Jan-2013 09:16:54
12-Feb-2013 08:29:26
13-Feb-2013 09:40:05
04-Mar-2013 09:21:39
05-Mar-2013 08:09:55
06-Mar-2013 08:48:01
07-Mar-2013 09:25:52
07-Mar-2013 13:11:31
18-Mar-2013 08:28:59
20-Mar-2013 10:02:52
20-May-2013 11:07:11
21-May-2013 07:16:35
23-May-2013 08:27:29
23-May-2013 08:27:56
12-Jun-2013 14:46:42


Ich erhalte bei der Abfrage
Code:
classnum = class(Date)
classstr = class(datestr(Date))

die Ausgabe
Code:
classnum =

double


classstr =

char


Ich möchte von dem ersten Wert der Zeitreihe den selben Tag mit der Uhrzeit '17:30:00'.

Also in diesem Fall
Code:
14-Nov-2012 17:30:00
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: 10.07.2013, 12:09     Titel:
  Antworten mit Zitat      
Hallo BoWallace,

Ich kann mir nicht erklären, wie dies:
Code:
Date =
14-Nov-2012 16:07:40
...

und dies:
Code:

zusammen passen kann. "Date" ist doch ganz offensichtlich kein double.

Das Ergebnis von "classstr = class(datestr(Date))" ist nicht aussagekräftig, da die Umwandlung per DATESTR natürlich einen String erzeugt, wie der Name ja schon sagt.

Vielleicht ist "Date" eine Matrix, die als Zeilen DATEVEC-Vektoren enthält. Dann wäre statt:
Code:
FirstDay    = datenum([datestr(Date(1), 'dd.mm.yyyy') ' 17:30'])

wohl dies hilfreich:
Code:
FirstDay    = datenum([Date(1:3), 17, 30, 0])


Mir ist immer noch zuviel Raten notwendig um zu verstehen, was Du als Inputs hast und als Output wünschst.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 26.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.07.2013, 12:52     Titel:
  Antworten mit Zitat      
Sorry. Ist vielleicht immernoch zu undeutlich.

Ich habe Date als Spalte mit Datumsnummer. Konvertiere ich diese Zahlen mit Hilfe von
Code:
, so erhalte ich ja Datumscodes in der Form
Code:
dd-mm-yyyy HH:MM:SS
.
Code:

erzeugt mir also beispielsweise
Code:
Date =

   1.0e+05 *

  Columns 1 through 16

    7.3529    7.3529    7.3529    7.3529    7.3529    7.3529    7.3530    7.3531    7.3532    7.3532    7.3532    7.3532    7.3536    7.3536    7.3536    7.3536

  Columns 17 through 28

    7.3536    7.3536    7.3536    7.3536    7.3537    7.3537    7.3538    7.3538    7.3538    7.3538    7.3538    7.3538


ans =

20-Feb-2013 09:54:18
20-Feb-2013 10:00:51
20-Feb-2013 10:09:02
20-Feb-2013 10:27:09
20-Feb-2013 10:59:17
28-Feb-2013 15:40:28
06-Mar-2013 08:56:17
15-Mar-2013 10:29:03
22-Mar-2013 08:39:23
22-Mar-2013 08:55:05
22-Mar-2013 09:00:49
22-Mar-2013 09:01:23
06-May-2013 08:22:16
06-May-2013 08:22:36
06-May-2013 08:22:55
06-May-2013 08:23:16
06-May-2013 08:24:06
06-May-2013 08:24:37
06-May-2013 08:25:02
06-May-2013 08:25:23
17-May-2013 11:27:13
17-May-2013 11:42:29
21-May-2013 07:42:11
21-May-2013 09:59:34
23-May-2013 08:52:22
23-May-2013 09:02:14
23-May-2013 09:02:37
23-May-2013 09:02:56


ans =

20-Feb-2013 09:54:18
 


Ich möchte jetzt aus diesem ersten Wert
Code:
20-Feb-2013 09:54:18
- als Zahl
Code:
7.3529e+05
- eine neue Zahl erstellen, die dem Datumscode
Code:
20-Feb-2013 17:30:00
entspricht.
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: 10.07.2013, 15:28     Titel:
  Antworten mit Zitat      
Hallo BoWallace,

Ich weiß, dass das Fragen gerade dann besonders schwer ist, wenn man die Antwort noch nicht kennt. Und sowie man die Antwort kennt, ist die Frage banal. Das liegt ja in der Natur der Dinge.

Also, die Berechnung kann im DATENUM oder DATEVEC Format ausgeführt werden, das direkteste ist aber natürlich das String Format:
Code:
% Im DATENUM Fomat:
s = '20-Feb-2013 09:54:18';
d = datenum(s);
d2 = floor(d) + (17 * 3600 + 30 * 60) / 86400);
s2 = datestr(d2, 'dd-mmm-yyyy HH:MM:SS');

% Im DATEVEC Fomat:
v = datevec(s);
v(4:6) = [17, 30, 0];
s2 = datestr(v, 'dd-mmm-yyyy HH:MM:SS');

% Oder als STRING:
s2 = [s(1:12), '17:30:00'];
 

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 26.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.07.2013, 08:05     Titel:
  Antworten mit Zitat      
Vielen Dank!
Das scheint zu funktionieren.
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.