Ich stehe gerade vor der gleichen Aufgabe und habe mir die Berechnung einmal "nachgebaut" (hätte es nett gefunden wenn du die komplette Lösung einmal gepostet hättest - so läuft es ja normalerweise hier).
Vielleicht verstehe ich es nicht richtig aber eigentlich sollten es doch nach Durchlauf des Programms weniger 15-Minuten-Mittelwerte als 10-Minuten-Mittelwerte sein, oder!? Sind es aber natürlich nicht wenn die Schleife 52560 mal durchläuft.. Aber irgendwie weiß ich auch nicht was ich ändern muss
Hier der Code und im Anhang die Beschreibung bzw. Daten:
Code:
% Winddaten in 10-Minuten-Auflösung <52560x1 double>
Winddaten_10 = rand(5260,1);
% Vektor für Winddaten in 15-Minuten-Auflösung
Winddaten_15 = [];
% Berechnung for n=1:1:size(Winddaten_10,1)-1
gm = abs((mod(2*m(n),3))-1)+1;
gm1 = abs((mod(2*m(n+1),3))-1)+1;
n
t15 = (Winddaten_10(n,1)*gm + Winddaten_10(n+1,1)*gm1)/3
Winddaten_15 = vertcat(Winddaten_15,t15);
end
Bitte öffne für eione neue Frage ein neues Thema. Wenn Du das andere Thema passend findest, wäre ein Link dorthin sinnvoll: http://www.gomatlab.de/10-minuten-i.....etc-umrechnen-t19807.html
Das Anhängen einer neuen (auch ähnlichen) Frage nennt man Thread-Highjacking und es macht den "beantwortet"-Status sinnlos und erhöht den Konfusionslevel, weil keiner mehr weiß, ob die Orginal-Frage oder die neue Frage beantwortet wird.
Ohne Frage erschlägt mich der Komplexitätsgrad, obwohl die eigentliche Berechnung sicherlich einfach ist.
Was genau ist Deine Frage?
Du hast Daten mit einer Auflösung von 10 Minuten und möchtest per linearer Interpolation Daten mit 15 Minuten Auflösung erhalten? Neben INTERP1, ging dies auch per Hand:
Code:
% Winddaten in 10-Minuten-Auflösung <52560x1 double>
Winddaten_10 = rand(52560, 1);
a = Winddaten_10(1:3:end); % matching times
b = 0.5 * (Winddaten_10(2:3:end) + Winddaten_10(3:3:end));
c = [a.', b.'];
Winddaten_15 = c(:);
Das mit dem Thread-Hijacking verstehe ich aber da ich 1:1 das machen möchte was der "Eröffner" des Threads wollte (ohne Änderung der Aufgabenstellung), nämlich einfach 10-Minuten-Mittelwerte in 15-Minuten-Mittelwerte umrechnen, macht es meiner Meinung nach keinen Sinn dafür einen neuen Thread zu eröffnen. Das wäre dann ja unnötige Redundanz.. Am besten wäre es meiner Meinung nach gewesen wenn er einfach seine Lösung gepostet hätte. Dann hätte ich garnicht Fragen müssen..
Nun denn - ich will hier auch keinen Flamewar starten, sondern bin froh, dass du mir helfen möchtest
Also die Aufgabenstellung ist 1:1 das zu tun was in der Dena Netzstudie (siehe http://www.dena.de/fileadmin/user_u.....ht_dena-Netzstudie_II.pdf S. 109 im PDF oder JPG in meinem letzten Post steht), nämlich aus den 10-Minuten-Mittelwerten gewichtete 15-Minuten-Mittelwerte zu berechnen. Eigentlich ist die Iterationsvorschrift ja schon gegeben. Auf die schnelle würde ich sagen, dass das nicht einer linearen Interpolation entspricht. Aber da will ich mich nicht festlegen
Ich glaube auch, dass ich es mittlerweile habe lösen können. Hier mal mein Code:
Das einzige Problem ist, dass im letzten Durchlauf noch einmal auf das "m(n)+1"-te Element aus Winddaten_10[] zugegriffen wird. Aber das sollte ja nicht weiter stören..
Nach 1.5 Jahre wird der Autor des alten Threads wohl nicht mehr reagieren.
Danke, dass Du versucht hast Redundanz zu vermeiden! Und ich stimme Dir zu, dass es immer sehr hilfreich ist, wenn die Fragenden die Lösung posten.
Bemerkung: "clear all" löscht alle Funktionen aus dem Speicher und das Nachladen von der Festplatte verbraucht viel Zeit. Wenn Du die Variablen löschen möchtest, hilft "clear" oder "clear variables".
Wenn ich die Tabelle aus dem geposteten Bild richtig verstehe:
Gibt dies das gleiche Ergebnis? Dann könnte man sich das Gezwitscher mit den MOD-Operatoren sparen...
Wenn n_15 kein Integer ist, müsste man n_10 einfach verkleinern - der letzte Wert ist dann sowieso nicht mehr vorschriftsmäßig zu berechnen.
Gruß, Jan
Zuletzt bearbeitet von Jan S am 13.02.2013, 15:41, insgesamt einmal bearbeitet
Danke für den Tipp! Habe ich gleich mal geändert. Bin noch nicht so lange mit MATLAB unterwegs..
Nee, bei deinem Code kommt nur eine Fehlermeldung. Ist aber auch egal denn ich habe ja meine Lösung und vor allem mit seriöser Quelle auf die ich verweisen kann. Letztendlich ist mir auch nicht wichtig wie elegant die Berechnung gelöst ist sondern dass ich schnell mit den Resultaten weiterarbeiten kann
Oh, da blutet mein Programmierer-Herz. Ich finde den angegebenen Algorithmus so verwurstet, dass ich die Quelle auf keinen Fall las "seriös" betrachten kann.
Ja, es gibt tatsächlich eine Fehlermeldung, da der Code einen Bug enthält:
Du hattest am Anfang des Thread betont, dass es praktisch wäre, wenn der Code gepostet würde, der das Problem löst. Die geschachtelten MOD-Aufrufe halte ich aber für keine nachvollziehbare Lösung, sondern für einen ineffizienten Hirnverzwirner. Ich finde, ganz schön eitel, dass mein Code leichter zu debuggen und zu verstehen ist. Auf alle Fälle läuft er deutlich schneller. Und es wäre doch sinnlos, Windenergie-Anlagen zu optimieren, und dafür Atomstrom zu verschleudern, oder?
Und seriös bin ich auch, ehrlich.
Ich finde, ganz schön eitel, dass mein Code leichter zu debuggen und zu verstehen ist. Auf alle Fälle läuft er deutlich schneller. Und es wäre doch sinnlos, Windenergie-Anlagen zu optimieren, und dafür Atomstrom zu verschleudern, oder?
Und seriös bin ich auch, ehrlich.
Aber ich habe es ausprobiert: Mein Code erzeugt das exakt gleiche Ergebnis.
Laufzeit des Orginal-Codes mit den MOD-Befehlen: 0.169 sec
Laufzeit mit meinem Code: 0.0018 sec
Natürlich werfen Dich 0.167 Sekunden Dich in Deinem Projekt nicht arg zu weit zurück. Aber ein Speedup von 100 ist doch nicht schlecht, oder?
@Seban:
Unter http://en.wikipedia.org/wiki/List_of_emoticons wird "<3" als "Herz" erklärt. Nun, Du hast die Antwort ja bereits als Off-Topic erklärt... ;-)
Seriös bin ich übrigens wirklich - ich trage zur Zeit noch nicht mal einen Doktortitel.
Gruß, Jan
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.