ich bin wiedermal auf ein Problem gestossen, das ich nicht selbst bewältigen kann: Ich importiere in einem ersten Schritt Daten von einem Excel File: Import -und Export Land (beide irrelevant für dieses Problem), Preis und Datum/Zeit.
Die Transaktionen spielen zu jedem möglichen Zeitpunkt statt, d.h. manchmal gibt es in 15 Minuten 50 Zeilen mit 50 verschiedenen Preisen, manchmal gibt es aber in 15 Minuten nur 2 Transaktionen (manchmal vllt sogar gar keine).
Mein Ziel ist es nun, die Preise während 15 Minuten Intervallen zu mitteln; Vllt hat es zwischen 01.01.2010 08:00 und 08:15 zehn Preise --> Diese sollen gemittelt werden. Dasselbe für 08:15 - 08:30 etc.
Ich habe einen Ansatz, aber egal ob ich 'double', 'char', etc. einlesen, kommt eine Fehlermeldung, dass die Funktion diesen Input nicht liest. Wie muss ich die Daten in die getsampleusingtime function einlesen? Und wie kann ich dem Code sagen, dass die Preise gemittelt werden sollen? Muss ich ganz unten beim Code, statt mittel=[mittel;mean... vielleicht mittel=[Price;mean... schreiben?
Der Code für das Mitteln ist erst ganz unten..die letzten 6 Zeilen oder so. Die Zeilen vorher habe ich aber auch rein getan, damit ihr seht, wie die Sachen eingelesen werden.
N = datenum('01.01.201000:00');
M = datenum('01.01.201000:15');
mittel=[];
for i=0:364 %Es sollte eigentlich bis Mitte 2015 gehen, kann ich einfach die Anzahl Tage ausrechnen und hier reinschreiben?
mittel=[mittel;mean(getsampleusingtime(DateTime,datestr(N+i/96),datestr(M+i/96)),'Weighting', 'time')];
end
ich bin ein kleines bisschen weitergekommen; Es kommt keine Fehlermeldung mehr, aber der Vektor "mittel", von dem ich mir erhofft hatte, dass er die gemittelten Werte beinhaltet, bleibt leer. Könnt ihr mir hier helfen? Der Code sieht nun wie folgt aus:
N = datenum('01.01.201000:00');
M = datenum('01.01.201000:15');
mittel=[];
for i=0:3000
mittel=[mittel;mean(getsampleusingtime(ts,N+i/96,...
M+i/96),'Weighting','time')];
end
keine Angst, man muss nicht den gesamten Code lesen, es geht nur um die eine Funktion zwischen den Reihen mit %%%%%%%%%%%.
der neue Code funktioniert soweit, ich habe nur noch ein Problem mit der Funktion getsampleusingtime, über welche ich sehr wenig im Internet finde:
In meiner Datenbank gibt es Zeilen, die genau die selbe Zeit haben, jedoch verschiedene Preise. Momentan wird durch unique in diesem Fall jeweils nur eine Zeile raus gelesen und mit den anderen gemittelt. Ich brauch aber alle Zeilen. Mittels folgender Funktion, sollte genau dieses Problem gelöst werden können, aber da ich dadurch keinen Start- und Endpunkt mehr in die Funktion eingeben kann, weiss ich nicht, wie ich das Problem lösen soll:
ts1 = getsampleusingtime(ts,time,'AllowDuplicateTimes',true) returns a new timeseries object, ts1, with multiple samples when the specified time occurs more than once in ts
Ich denke, dass man die drei Zeilen unter "% Stelle Eindeutigkeit des Zeitvektors sicher" löschen - und die Funktion getsampleusingtime ändern muss. Aber ich weiss nicht, was da rein kommen soll.
Falls jemand mal dasselbe Problem hat; Das Problem wurde gelöst, in dem man bei einer Zeit (falls zwei gleiche Zeiten verschiedene Preise haben) eine Sekunde addiert (mit einer Schleife). In diesem Fall ist diese "Manipulation" vernachlässigbar.
Viele Grüsse
rekcat
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
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.