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

Diskontinuierlichen Datumsvektor nach Tagen aufteilen

 

Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 18.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 19.01.2012, 00:43     Titel: Diskontinuierlichen Datumsvektor nach Tagen aufteilen
  Antworten mit Zitat      
Hallo,

Ich bin noch nicht allzu bewandert in MATLAB und hoffe mir kann hier jemand bei einem Problem weiterhelfen oder uU einen Denkanstoß liefern.

Ich habe einen Vektor mit Datums- & Zeitangaben der Form:
Code:
DateTime = ['2011-01-11T20:00:37'; ...];
DateTimeNum = dateNum(DateTime(:), 'yyyy-mm-ddTHH:MM:SS');

und einen gleichlangen Vektor mit Geschwindigkeiten >=0:
Code:
VehSpeed = [0; 0; 2; 5; ...];
logDriving = VehSpeed > 0;


Der Datumsvektor ist unzusammenhängend. Damit meine ich, es wurden nicht durchgehend für den Betrachtungszeitraum Daten aufgezeichnet. In den nicht erfassten Zeitpunkten soll die Geschwindigkeit 0 sein. Die Daten umfassen etwa einen Zeitraum von 6 Monaten.

Was ich machen möchte:
Für jeden Tag möchte ich erfassen, zu welchen Uhrzeiten gefahren wurde (1 gefahren, 0 nicht, dazu der logische Vektor) und dies dann für alle Tage aufsummieren. So soll sich am Ende ein Graph darstellen lassen, der über 00:00:00 bis 23:59:59 auf der x-Achse auf der y-Achse die Häufigkeit anzeigt, zu welcher Uhrzeit wie häufig gefahren wurde.

Mein Ansatz:
Den Vektor logDriving mit Hilfe des Datumsvektors DateTimeNum in n (n=Anzahl der Tage) Vektoren aufteilen und diese n Vektoren dann aufaddieren.

Mein Problem:
Die Vektoren sind wie gesagt nicht kontinuierlich, so dass ich für die einzelnen Tage unterschiedlich lange Vektoren erhalten werde.
Bsp: Tag 1 hat Daten von 7:00 bis 23:59
Tag 2 hat Daten von 00:00 bis 23:59
Tag 3 hat Daten von 1:00 bis 20:00
Nun muss ich ja sicher stellen, dass diese unterschielich langen Vektoren korrekt addiert werden können. Es sollen ja für jeden Tag die Werte für 00:00:00 addiert werden, die Werte für 00:00:01 addiert usw usf

Ich weiß allerdings nicht, wie ich dies anstellen kann.

Vielleicht gibt es ja auch einen anderen einfacheren Ansatz?

Ich hoffe, mein Problem verständlich erklärt zu haben und würd mich über Hilfe freuen.

Grüße,
Seban
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 19.01.2012, 08:45     Titel:
  Antworten mit Zitat      
erstell einfach für jeden tag eine nullvektor mit der länge der anzahl der sekunden die ein tag hat. über datenum findest du dann ja raus bei welchem index du v reinschreiben musst. kannst auch gleich ne matrix erstellen mit tagen als spalte und sekunde als zeile.
Private Nachricht senden Benutzer-Profile anzeigen
 
Seban
Themenstarter

Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 18.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 20.01.2012, 01:46     Titel:
  Antworten mit Zitat      
Danke für die Antwort!

Ich habe etwas nicht genau genug beschrieben. Der Datumsvektor ist insofern diskontinuierlich, dass nicht nur ein Fall "Tag 1 hat nur Daten von 7:00 bis 23:59 " auftreten kann, sondern auch dass zwischendurch Werte fehlen, weil bspw für ein paar Sekunden kein Signal übertragen wurde. Daher muss ich wohl jeden einzelnen Wert vergleichen.

Um die Zeitwerte zu vergleichen, brauche ich dann ja noch eine gleich große TimeMatrix. (Nebenfrage: Ist es sinnvoll dazu ein Struct zu verwenden?)

Ich kann DateTimeNum reduzieren, so dass nur Zeiten in diesem Vektor stehen, zu denen tatsächlich gefahren wurde. Dann habe ich:
Code:
driveTimes=[...];
for i=734594:734761
    TimeMatrix((i-734593),:)=i:115741e-10:i+1;
end
DataMatrix(168,86400)=0;


Jetzt laufe ich durch die TimeMatrix und wenn ich den Zeitwert finde, der mit driveTimes(1) übereinstimmt, schreibe ich an entsprechende Stelle in DataMatrix eine 1 und laufe dann weiter durch die Zeitmatrix auf der Suche nach driveTimes(2) usw.

So in etwa hast du das gemeint, oder? Smile

Ich denke, ich komme morgen dazu das auszuprobieren.
Private Nachricht senden Benutzer-Profile anzeigen
 
Seban
Themenstarter

Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 18.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 23.01.2012, 00:49     Titel:
  Antworten mit Zitat      
Hi,

Die Anforderungen haben sich etwas geändert, so dass sich das "Problem" nicht mehr ergibt.

Winkows Ansatz wäre aber eine mögliche Lösung gewesen.

Danke!
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.