Verfasst am: 15.10.2018, 15:47
Titel: Filtern von Messdaten nach Regelmäßigkeiten
Hallo zusammen,
ich bin noch recht ungeübt im Umgang mit Matlab und deshalb nicht sicher ob das eine schwere oder leichte Frage ist. Selber bin ich leider auf keine Lösung gekommen und in den Threads habe ich auch nichts gefunden.
Mir liegen zwei Zeitreihen mit Messdaten vor. Die erste ist von einer PV-Anlage und die andere von einer elektrischen Haushaltslast. Da beide über 525600 (Minuten pro Jahr) Zeilen verfügen würde ich diese hier durch Beispiele ersetzten.
Gerne würde ich in einem neuen Vektor herausfiltern, welche elektrische Last im Haushalt auftritt, wenn gerade Nacht (heißt PV<=0) ist und den Rest 0 setzten. Problem ist hierbei, dass bei meinen Messwerten auch Tagsüber kurzzeitig die PV-Erzeugung auf 0 abfällt und so das Ergebnis beeinflusst wird. Meine Gegenmaßnahme wäre nun, die elektrische Last nur dann zu betrachten wenn die PV-Erzeugung für 5 oder mehr Zeitschritte 0 ist.
Beispiel:
Code:
PV=[1230000034023]';
P_last=[1346795432345]';
%Mein Versuch, in dem aber auch kurzzeitige 0 erfasst wird:
n=PV<=0;
P_nacht=P_last(n);
anbei eine Variante per Function. Geht aber bestimmt auch deutlich schöner:
Code:
PV = [12300000034023]';
P_last = [13467954322345]';
anz_null = 5; % Anzahl aufeinanderfolgender Nuller ab der Messung als Nacht gewertet wird
P_last_nacht = nachtlast(PV,P_last,anz_null);
function P_last = nachtlast(PV,P_last,anz_null) for zaehler = 1:length(PV) if zaehler < length(PV)-anz_null
PV_sum(zaehler,1) = sum(PV(zaehler:zaehler+anz_null-1,1));
else
PV_sum(zaehler,1) = sum(PV(zaehler:end,1));
end end
nuller = find(PV_sum == 0);
P_last_neu = zeros(length(P_last),1);
for zaehler = 1 : length(nuller)
P_last_neu(nuller(zaehler):nuller(zaehler)+anz_null-1,1) = P_last(nuller(zaehler):nuller(zaehler)+anz_null-1,1);
end
P_last = P_last_neu;
end
1.) Ask Google & Matlab Documentation
2.) Ask gomatlab.de & Technical Support of MathWorks
3.) Go mad, your problem is unsolvable
Lukas123
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 17.10.2018, 11:24
Titel:
Hallo Jonas,
vielen Dank erstmal für deine Antwort und die Vorgeschlagene Lösung. Das ganze scheint so erstmal super zu funktionieren. Leider jedoch nicht, wenn sich die Nächte wiederholen.
Ich hänge mal Beispieldaten der HTW Berlin dran. Hättest du für die gegebenen Messwerte noch eine Idee oder generell einen Vorschlage wie ich über eine Variable ausdrücken könnte, dass gerade Nacht ist?
Leider jedoch nicht, wenn sich die Nächte wiederholen.
Bitte genauer beschreiben was dann nicht funktioniert oder welcher Fehler auftritt.
Wenn ich das mit deiner Beispieldatei starte kommt ein Fehler weil am Schluss außerhalb der Matrix auf Werte zugegriffen werden soll. Mit folgender, kleinen Anpassung geht das aber auch:
Code:
PV = p_pv;
P_last = P_ld;
anz_null = 5; % Anzahl aufeinanderfolgender Nuller ab der Messung als Nacht gewertet wird
P_last_nacht = nachtlast(PV,P_last,anz_null);
function P_last = nachtlast(PV,P_last,anz_null)
PV_sum = zeros(length(P_last),1);
for zaehler = 1:length(PV) if zaehler < length(PV)-anz_null
PV_sum(zaehler,1) = sum(PV(zaehler:zaehler+anz_null-1,1));
else
PV_sum(zaehler,1) = sum(PV(zaehler:end,1));
end end
nuller = find(PV_sum == 0);
P_last_neu = zeros(length(P_last),1);
for zaehler = 1 : length(nuller) if nuller(zaehler) < length(PV)-anz_null
P_last_neu(nuller(zaehler):nuller(zaehler)+anz_null-1,1) = P_last(nuller(zaehler):nuller(zaehler)+anz_null-1,1);
else
P_last_neu(nuller(zaehler):end,1) = P_last(nuller(zaehler):end,1);
end end
P_last = P_last_neu;
end
Wie gesagt: Solltest du irgendwelche Fehler bekommen oder irgendwas nicht passen, dann bitte das ganze genau beschreiben und am besten noch die Fehlermeldung(en) hier reinkopieren.
Grüße
Jonas
_________________
1.) Ask Google & Matlab Documentation
2.) Ask gomatlab.de & Technical Support of MathWorks
3.) Go mad, your problem is unsolvable
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.