Verfasst am: 19.04.2013, 09:08
Titel: Tage aus datenreihe extrahieren
Hallo,
ich habe folgende Matrix:
a = [b,c]
b ist ein Vektor aus 30 Tagen wobei jeder Tag in 30 Minuten Schritten unterteilt ist (datenumbers), wobei dieses Zeitintervall nicht konstant ist, d. h. es koennen an einem Tag weniger Werte vorhanden sein.
c sind die dazugehoerigen Messwerte, wobei einge davon NaN's sind.
Ich möchte nun jeden Tag in zwei Stunden Mittelwerte aufteilen, so dass ich 12 Einträge pro Tag habe und dann jeweils dieselben zwei Stunden Mittelwerte eines jeden Tages zu einem Vektor zusammenfügen.
Am Ende sollte ich eine Matrix haben mit einer Dimension aus 30x12.
Vielleicht kann mir jemand bei diesem Problem weiterhelfen.
a=rand(30*24*2,2);
z=datenum('20-Oct-200300:30:00')-datenum('20-Oct-200300:00:00');
for k=1:30*24*2
a(k,1)=datenum('20-Oct-200300:00:00')+(k-1)*z;
end
b=zeros(30*12,2);
for k=1:30*12
b(k,2)=mean(a(4*k-3:4*k,2));
b(k,1)=mean(a(4*k-3:4*k,1));
end
c=zeros(30,1);
for k=1:30
c(k,1)=mean(b(k:12:end,2));
end
irgendwie so würd ich das machen. wobei mein a b c nichts mit deinen abc zu tun haben. der erste teil ist nur zur generierung der beispiel daten da du ja nichts angegeben hast.
Verfasst am: 20.04.2013, 06:58
Titel: Index exceeds Matrix dimension
Schon einmal vielen Dank fuer die rasche Antwort. Ich habe versucht, die Mittelungen auf diese Weise durchzufuehren, doch es hat nicht funktioniert.
am Schluss bekomme ich die Fehlermeldung:
Index exceeds matrix dimensions.
Ich habe schon versucht, die Werte zuerst in zwei Stunden Mittelwerte zu berechnen und danach diese Mittelwerte so zu Ordnen, das ich jeden Tag in einer Zeile stehen habe mt 12 Spalten. Leider passen die Befehle doch nicht.
naja wie deine fehlermeldung schon sagt ist irgendeine von deinen matrizen nicht so groß wie bei mir ^^ und ich kann keine daten sehen die du angehangen hast.
Verfasst am: 21.04.2013, 09:23
Titel: Fehler: laenge matrix nicht konstant
Ich habe vorher ganz uebersehen, dass auch einige Tage fehlen, deshalb die Fehlermeldung. Das mit dem Anhang sollte jetzt funktioniert haben.
Ich habe probiert, den folgenden Code anzuwenden. Der mittelt alle zwei Stunden von denselben Zeiten. Doch am Schluss bekomme ich 'inf ' Werte, die mir nicht viel nuetzen. Deshalb die Idee, jeden Tag separat zu berechnen, damit ich zumindest an einigen Tagen eine laengere Zeitspanne habe.
b = a(:,1);
c = a(:,2)
for i=1:12
indx=find(mod(b,1)*24>i*2 & mod(b,1)*24<(i+1)*2);
for j=1
b_mean(i,j)=nanmean(c(indx,j))';
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.