|
|
Intervall mit variabler Größe finden und ausgeben |
|
Xoko |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.12.2013, 20:39
Titel: Intervall mit variabler Größe finden und ausgeben
|
 |
|
 |
|
Hallo!
Ich habe folgendes Problem an dem ich jetzt schon länger tüftle: Ich habe einen seeeeehr langen Vektor, nämlich eine minütliche Wind- Zeitreihe über mehrere Monate, und nun möchte ich für jeden Tag (also für jedes 24Stunden-Intervall) 2 kleinere Intervalle finden!
Morgens dreht der Wind von Süd auf Nord, und Abends von Nord auf Süd!
Leider passiert das nicht von einem Zeitschritt auf den nächsten, sondern kann schon mal eine halbe Stunde dauern. Also dachte ich mir ich definiere das Intervall so:
erster Wert=180°
....
letzter Wert=0°
Ich habe schon die Differenzen zwischen en einzelnen Zeitschritten berechnet, also gesagt wenn die Differenz größer als 0 ist dann schreibt er mir diese Komponente des Vektors heraus!
Aber wie erkläre ich Matlab dass es mir ein ganzes Intervall mit den geforderten Bedingungen herausschreiben soll, von dem ich nicht genau sagen kann wie groß es sein wird??
Und wie bestimme ich von diesem Intervall dann genau den mittlersten Wert?
Hilfe...
|
|
|
|
|
Seban |

Forum-Meister
|
 |
Beiträge: 600
|
 |
|
 |
Anmeldedatum: 19.01.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ab R2014b
|
 |
|
|
 |
|
Verfasst am: 08.12.2013, 20:52
Titel:
|
 |
Hallo Xoko,
Wenn du Beispielcode (mit Bsp. für die Daten) angeben könntest, könnte man dir helfen ohne raten zu müssen
Grüße,
Seban
|
|
|
Xoko |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.12.2013, 21:34
Titel:
|
 |
Ok stimmt, also hier ist mal das was ich hab soweit:
In dieser ersten Schleife wird der Unterschied in der Windrichtung (also von Vektor gem_Winddir) von einem Zeitschritt auf den nächsten berechnet und in den neuen Vektir Differenz geschrieben. Diese Differenz quadriere ich dann um vom Vorzeichen unabhängig zu sein:
In der 2ten Schleife versuche ich den Umschwungpunkt festzulegen indem ich einfach jene Punkte suche wo sich die Windrichtung geändert hat (also die Differenz ungleich 0 ist) und diese Punkte auch im Datumsvektor (=Zeit) herausschreibe:
Leider bin ich eben draufgekommen dass der Wind nicht von einem Zeitschritt auf den anderen dreht, sondern innerhalb zB einer halben Stunde um 180° dreht - und dieses Untervall wo diese Drehung um jeweils 180° passiert will ich haben!!
Lg Xoko
|
|
|
Seban |

Forum-Meister
|
 |
Beiträge: 600
|
 |
|
 |
Anmeldedatum: 19.01.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ab R2014b
|
 |
|
|
 |
|
Verfasst am: 08.12.2013, 22:44
Titel:
|
 |
Hi,
* Könnte gem_Winddir bspw. so aussehen (stark vereinfacht natürlich)?
* In deiner ersten Schleife verstehe ich den Sinn der if-Abfrage nicht. Du führst nur Berechnungen durch, wenn gem_Winddir 0 ist
* Warum quadrierst du anstatt abs zu verwenden?
* Ich würde das ganze vektoriell zu lösen versuchen:
Hilft das weiter? Bei Fragen, fragen
Grüße,
Seban
|
|
|
Xoko |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.12.2013, 02:21
Titel:
|
 |
|
 |
|
Hallo Seban!
Erst mal vielen Dank für deine Hilfe soweit
Aber zugegeben - ich hab da ein paar Fragen:
1.) was bedeutet die 0 in den Klammern?
2.) Hm, also heißt das er identifiziert zuerst auch die Differenzen von einem Zeitschritt zum nächsten, und wenn die Differenz größer 0 ist dann schreibt er im Zeitvektor eine 1, ansonsten eine 0 --> multiplizierst du deswegen dann die "gefundenen Punkte" mit dem Zeitvektor?
Was bedeuten die Nullen in diesen Zeilen? Also die erste vor log_diff_Winddir und die erste in der 2ten eckigen Klammer?
Zu deinen Fragen:
Also ich hatte 2 Schleiffen, jeweils eine für die Drehung Süd auf Nord und eine für Nord auf Süd! Deshalb wollte ich Matlab sagen es soll sich zum Beispiel bei der Drehung von Nord auf Süd die Komponenten mit Nordwind anschauen, da die Differenzen berechnen und ja. Ich hab gedacht so kann ich den "Anfang" meines Intervalls finden!
Warum quadriert und nicht abs? Hm, gute Frage - ich hab gar nicht an abs gedacht...
Jedenfalls mal vielen Dank; das hilft mir schon sehr weiter
VlG Xoko
|
|
|
Seban |

Forum-Meister
|
 |
Beiträge: 600
|
 |
|
 |
Anmeldedatum: 19.01.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ab R2014b
|
 |
|
|
 |
|
Verfasst am: 09.12.2013, 03:33
Titel:
|
 |
|
 |
|
Gern geschehen
Xoko hat Folgendes geschrieben: |
1.) was bedeutet die 0 in den Klammern? |
erzeugt einen neuen Vektor, der als erstes Element eine 0 und dann die Elemente von diff_Winddir beinhaltet.
Das habe ich so gemacht, damit man einen Vektor der Länge des Ausgangsvektors erhält. Durch diff erhält man ja einen um 1 kürzeren Vektor, da immer 2 aufeinanderfolgende Elemente subtrahiert werden.
Xoko hat Folgendes geschrieben: |
2.) Hm, also heißt das er identifiziert zuerst auch die Differenzen von einem Zeitschritt zum nächsten, und wenn die Differenz größer 0 ist dann schreibt er im Zeitvektor eine 1, ansonsten eine 0 --> multiplizierst du deswegen dann die "gefundenen Punkte" mit dem Zeitvektor? |
Der logische Vektor log_diff_Winddir enthält Einsen an den Stellen, an denen sich der Winkel geändert hat. Durch die Multiplikation mit dem Zeitvektor erhält man dann einen Vektor, der die Zeiten einer Winkeländerung angibt und an den Stellen an denen keine Winkeländerung erfolgt ist steht eine 0 (time_yaw_2). time_yaw hingegen enthält nur die Zeiten einer Winkeländerung, aber die Länge des Vektors ändert sich, was das Ganze schwieriger macht. Ist aber auch vom weiteren Vorgehen abh. welcher Vektor hilfreicher ist.
Um Code nachzuvollziehen, hilft idR. der Debugger. http://www.mathworks.de/de/help/mat.....process-and-features.html
Somit kannst du Zeile für Zeile durch den Code laufen und dir die Variablen in Ruhe anschauen, um zu erkennen was durch die Berechnungen passiert.
Kurzanleitung:
*Bsp. in ein m-File kopieren
*Cursor in 2. Zeile setzen, F12 drücken (Set breakpoint)
*F5 (Run) - Der Debugger stoppt nun in der 2. Zeile
*F10 (Step eine Zeile weiter)
*Wenn du nun den Mauszeiger über eine Variable hältst, wird dir der Inhalt der Variable angezeigt, sofern diese bereits berechnet wurde.
*weiter mit F10 (zeilenweise) oder F5 (bis zum nächsten Breakpoint/Ende der Datei)
Xoko hat Folgendes geschrieben: |
Was bedeuten die Nullen in diesen Zeilen? Also die erste vor log_diff_Winddir und die erste in der 2ten eckigen Klammer?
|
In der ersten eckigen Klammer wird (wie oben) ein neuer Vektor erzeugt. Das '> 0' braucht es nicht, der Vektor ist ja bereits logisch (hab ich nicht 100% aufgepasst).
In der 2. eckigen Klammer steht das gesuchte Pattern. Der Startbereich ist dort, wo eine 1 (Winkel geändert) auf eine 0 (Winkel gleich) folgt, das Ende umgekehrt (Unter der Voraussetzung, dass ich den Eingangsvektor erraten musste.).
http://www.mathworks.de/de/help/matlab/ref/strfind.html
Xoko hat Folgendes geschrieben: |
Also ich hatte 2 Schleiffen, jeweils eine für die Drehung Süd auf Nord und eine für Nord auf Süd! Deshalb wollte ich Matlab sagen es soll sich zum Beispiel bei der Drehung von Nord auf Süd die Komponenten mit Nordwind anschauen, da die Differenzen berechnen und ja. Ich hab gedacht so kann ich den "Anfang" meines Intervalls finden! |
Grüße,
Seban
|
|
|
Xoko |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.12.2013, 23:06
Titel:
|
 |
Hallo Seban!
Ok, echt nochmal vielen vielen Dank!!!! Ich bin unendlich dankbar dass es Leute wie dich gibt die sich wirklich die Zeit nehmen und "Verzweifelten" wie mir helfen!!
Also danke! Hab einen schönen Advent
VlG Xoko
|
|
|
Seban |

Forum-Meister
|
 |
Beiträge: 600
|
 |
|
 |
Anmeldedatum: 19.01.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ab R2014b
|
 |
|
|
 |
|
Verfasst am: 10.12.2013, 23:32
Titel:
|
 |
Vieles von dem was ich hier im Thread gepostet habe, hab ich hier im Forum gelernt als ich in meinem esrten Hiwi-Job Zeit-/Messreihen auswerten musste und selber verzweifelter Matlab-Neuling war.
Vielleicht stolperst du ja auch irgendwann mal über einen Thread zu dem du was beitragen kannst.
Beste Grüße,
Seban
_________________
Richtig fragen
Debugging
|
|
|
|
|
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.
|
|