|
|
Zeile in Matrix einfügen und interpolieren |
|
Danyo83 |

Forum-Anfänger
|
 |
Beiträge: 16
|
 |
|
 |
Anmeldedatum: 21.08.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.08.2010, 02:12
Titel: Zeile in Matrix einfügen und interpolieren
|
 |
Hallo Zusammen,
ich habe ein Problem. Ich habe eine Finanzzeitreihe (minuten-kurse) aus einer csv datei hochgeladen. da ab und zu eine minute oder manchmal auch mehrere übersprungen wurde, will ich an die jeweilige stelle in der matrix eine zeile mit der fehlenden uhrzeit einfügen und die kurse linear interpolieren.
Ich habe es schon mit der for-schleife in kombination mit einer if-bedingung, dass die Uhrzeit kontinuierlich +1 minute ansteigen soll, aber immer kleiner als 23:59 (habe einfach den ':' weggelassen) sein soll. Ich bekomme nur leider nicht hin, dass die neugebildete matrix diese zeile drin hat und dann mit den alten werten weitermacht.
Habt ihr Vorschläge???
Vielen Dank für eure Hilfe
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 22.08.2010, 10:32
Titel:
|
 |
Hallo,
es kommt drauf an, in welcher Form die Zeitreihe dann vorliegt. Konkretes Beispiel?
Normalerweise sollte es mit interp1 gehen.
Grüße,
Harald
|
|
|
Danyo83 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 16
|
 |
|
 |
Anmeldedatum: 21.08.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.08.2010, 10:06
Titel:
|
 |
|
 |
|
Hallo Harald,
ich habe eine Zeitreihe mit 5Minuten-Kursen (Wecheselkurse z.B. EUR/GBP) auf 5 Jahre. Ich habe das Problem, dass manchmal einfach Zeilen fehlen. z.B.
Date Time Open High Low Close
29.07.10 00:05 0.83733 0.83745 0.83733 0.83745
29.07.10 00:10 0.83746 0.83749 0.83743 0.83744
29.07.10 00:20 0.83745 0.83746 0.83738 0.83743
29.07.10 00.25 0.83741 0.83748 0.83736 0.83748
.
.
.
dabei fehlen alle WErte für 00:15. um mit den Kursen richtig arbeiten zu können müssen sie alle in getrennte Vektoren, d.h. nach dem hochladen teile ich sie in 6 Vektoren (n:1). Das bekomm ich hin, nur ist zum einen das Problem, dass Matlab die Uhrzeit nur als String erkennt, was mir nichts nützt, weil ich nur durch die Uhrzeit die fehlenden Werte identifizieren kann. Dass das Datum ein String ist, stört mich nicht für die weitere Arbeit(denke ich). Um das Problem mit der Zeit zu lösen ändere ich bereits in der csv datei das format und mache eine dezimalzahl daraus um sie numerisch und somit lesbar für amtlab zu machen. so kann ich feststellen, da der abstand zwischen den zeiten äquidistant ist, wenn eine Zeile fehlt. (Ist das die beste variante??).
Mein Ziel ist es: z.B. eine Schleife mit einer if-Bedingung zu kombinieren, so dass wenn matlab erkennt, dass eine Zeile fehlt, eine neue eingefügt wird und die Werte dabei linear interpoliert zwischen dem vorherigen und nachfolgendem Kurs (Bsp: 00.10 und 00.20Uhr). Dabei verändert sich die Größe der Matrix bzw. der Vektoren. Was auch wichtig ist, falls einmal mehrere Zeilen hintereinander fehlen, erledigt das die Schleife dann auch, weil ja skuzessive eine neue gebildet wird? Eine weitere Besonderheit ist der Stundenwechsel. Egal welches Format die Uhrzeit hat, die reihe fängt spätestens beim neuen Tag wieder von vorne an. Dieser umbruch muss ebenfalls berücksichtigt werden, weil sonst permanent Fehler auftreten.
Mein bisheriger Ansatz für die Schleife + If-Bedingung sieht wie folgt aus:
for i=2:1:n;
if (Uhrzeit(i,1)==(Uhrzeit(i-1,1)+1)) || (Uhrzeit(i,1)==0)); % würde ~Uhrzeit(i,1)==0 die Ausnahmeregel sein?
A=Uhrzeit(i,1);
else
A(1:i-1,1)=Uhrzeit(1:i-1,1); A(i,1)= Uhrzeit(i-1,1)+1; A(i+1,1)=Uhrzeit(i,1);
end;
end;
Ich wollte dass Matlab den Vektor repliziert bis eine Fehlermeldung wegen fehlender Zeile auftritt. Dann eine Zeile einfügt und anschließend den vektor weiter repliziert. Funktinoiert logischewrweise nicht, nur mir fällt keine andere Lösung ein.
Ich hoffe wirklich du kannst mir helfen.
Vielen Dank im Voraus.
Viele Grüße
Daniel
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 23.08.2010, 18:38
Titel:
|
 |
Hallo,
hier mein Vorschlag:
Grüße,
Harald
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|