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

Berechnung für Zeitreihe nach Jahren Abgrenzen

 

AluexRookie
Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 10.01.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2013, 22:18     Titel: Berechnung für Zeitreihe nach Jahren Abgrenzen
  Antworten mit Zitat      
Hey Freunde,

bräuchte dringend Hilfe bei einer, wie ich vermute, wohl ziemlich banalen Sache.

Und zwar habe ich eine Matrix mit 3 Spalten und ca. 6000 Zeilen.

Erste Spalte bezieht sich auf das Datum. Täglich von 1991-2012.
Die Zwei anderen Spalten beziehen sich auf Renditen.

Jedes Jahr ist nun unterschiedlich lang. teilweise 260 TradingTage, manchmal ein paar mehr, manchmal ein paar weniger.

Meine Aufgabe ist nun, jedes Jahr einzeln zu betrachten und eben innerhalb jeden Jahres eine bestimmte Rechnung durchzuführen.

Wie kann ich es nun schaffen, dass MATLAB selbstsständig ein neues Jahr erkennt und von dort an praktisch die Rechnung von vorne beginnt?
Das Ganze für jedes Jahr, so dass ich am Ende für jedes Jahr ein Ergebnis meiner Berechnung habe.

Hoffe ich konnte mein Problem einigermaßen verständlich wiedergeben.

Wäre sehr dankbar für hilfreiche Antworten Smile
Private Nachricht senden Benutzer-Profile anzeigen


markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 12.01.2013, 01:22     Titel:
  Antworten mit Zitat      
Dafür müsstest du uns sagen, wie Spalte 1 aussieht?

Code:

> datenum('05.08.1991','DD.MM.YYYY')
ans =  727203.005555556
> datestr(ans,'DD:MM:YYYY')
ans = 05:08:1991
 



Was heißt, du filterst deine Spalte 1 mit einer for Schleife, oder mit find, oder mit while ....nach deinem Datumformat und führst die Rechnungen aus.

Oder geht es dir nur darum, wie du alle deineDatumsangaben auf das Jahr runden kannst?

Code:

> datestr(datenum('01.01.1991','DD.MM.YYYY'),'yyyy')
ans = 1991
str2num(ans) % Damit du einfach 1991 == 1991 machen kannst. sonst musst du strcmp(ans,'1991') nehmen, geht aber auch!
 

_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
AluexRookie
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 10.01.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.01.2013, 02:18     Titel:
  Antworten mit Zitat      
Danke für deine Antwort! Smile

Also die Datumsangabe ist ein Vektor aus Ziffern. Das kann man theoretisch ja umwandeln.

Wie würde so ein Filter aussehen in Zsh. mit einer simplen Rechnung?
Private Nachricht senden Benutzer-Profile anzeigen
 
Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 19.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 12.01.2013, 16:49     Titel:
  Antworten mit Zitat      
Hi,

Du kannst deinen Datumsvektor wie von markuman erwähnt mit datenum in doubles umwandeln und dann die Indizes der einzelnen Jahre abfragen.
Code:
dates_num = datenum(date_vector);

ind_1991 = find(dates_num >= 727199 & dates_num < 727564);
ind_1992 = find(dates_num >= 727564 & dates_num < 727929);

Diese Indizes kannst du dann verwenden, um die Daten des jeweils zu berechnenden Jahres zu verwenden. Bei den >/<-Vergleichen musst du Schaltjahre beachten.
(727199 ist übrigens der 1.1.1991)

Edit: Alternativ kannst du auch mit regexp automatisch die einzelnen Jahre abfragen.
Code:
cell_1991 = regexp(date_vector, '1991');

Allerdings ist die Ausgabe hier ein cell, daraus musst du dann noch die Indizes bilden.

Grüße,
Seban
_________________

Richtig fragen
Debugging
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.