|
|
Anzahl und Dauer bei Überschreitung eines Schwellenwerts |
|
Phippu |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.10.2014, 15:42
Titel: Anzahl und Dauer bei Überschreitung eines Schwellenwerts
|
|
Hallo zusammen
Bin gerade daran, Abflussdaten auszuwerten. Mein Interesse liegt dabei an den Werten, die einen bestimmten Schwellenwert überschreiten.
Mein Programm soll die Anzahl und vor allem die Dauer von Abflussereignissen über dem Schwellenwert angeben.
Bsp: Schwellenwert: 150
Vektor A=[3 5 9 40 50 90 139 151 135 158 160 120 90 10]
Die fetten Werte überschreiten den Schwellenwert. Dies soll jetzt als zwei Ereignisse ausgegeben werden, mit der Dauer 1 und Dauer 2.
Dies möchte ich für mehrere Jahre auswerten (darum die for-Schleife)!
Mein jetziger Code sieht wie folgt aus:
Der Code funktioniert leider noch nicht wie gewünscht! Hat jemand eine Idee, wie ich dieses Problem lösen könnte? Habe schon diverse andere Einträge konsultiert, aber noch keine springende Idee gehabt.
Um Hinweise wäre ich sehr froh. Grüsse Phippu
|
|
|
|
|
mats |
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 16.10.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.10.2014, 15:59
Titel:
|
|
Bevor ich dir richtig helfen kann habe ich eine Frage zu deiner Datenstruktur. Qbd ist deine Matrix, in der fuer jedes Jahr die Abflussdaten stehen? Oder ist das eine cell struktur? Wenn es ne Matrix ist und idxi eine einzelne Zahl als Jahresindex, dann wird Qbd(idxi) doch gar nicht den ganzen Abflussvektor liefern, sondern nur einen einzelnen Datenpunkt. Muesstest du dann nicht eher Qbd(idxi, oder Qbd(:,idxi) je nach Datenstruktur untersuchen?
Oder ist Qbd ne cell, dann muesste der Aufruf Qbd{idxi} sein statt Qbd(idxi).
|
|
|
Phippu |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.10.2014, 16:06
Titel:
|
|
Hallo mats
Qbd ist mein Vektor wo ich die Abflussmesswerte gespeichert habe.
z.B.
Index Wert
1 3.47000000000000
2 3.47000000000000
3 3.47000000000000
4 3.06000000000000
5 3.06000000000000
6 3.34000000000000
7 6.82000000000000
8 4.45000000000000
9 3.06000000000000
10 ...
Ich werte nach den Jahren aus, suche mir dazu den passenden Index aus dem Datumvektor raus und suche dann die passenden Werte dazu im Qbd. Dies kann sicher auch einfacher gehen, bin gar kein Spezialist.
Hilft dies weiter?
Danke schonmals, gruess Phippu
|
|
|
mats |
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 16.10.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.10.2014, 16:12
Titel:
|
|
Was ich meinte betrifft diese Zeile aus deinem Code:
idxj = find(Qbd(idxi)>=threshold_high);
So wie es da steht, schaust du ja nur an einer einzigen Stelle des Vektors Qbd nach, ob der threshold_high ueberschritten wird. So wie ich dich verstehe, willst du ja aber alle Werte von Qbd finden, die diesen Wert ueberschreiten. Dann solltest du doch eher das hier schreiben:
idxj = find(Qbd>=threshold_high);
Hast du denn in jedem Jahr mehrere Abflussratenwerte oder nur genau einen?
|
|
|
Phippu |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.10.2014, 21:46
Titel:
|
|
Sorry, war hier ein wenig unklar. Ich habe 365 Werte pro Jahr, also tägliche Abflussmessungen. Diese rufe ich mit meinem Code auf. Das klappt auch, habe dies verifiziert. Das Problem ist nur ab dann, wenn ich unten die Zeitpunkte rausgeschrieben habe, an denen der Schwellenwert überschritten wird. Da komme ich nicht mehr weiter.
Danke schon mals und hoffe auf weitere Inputs.
Grüsse, Phippu
|
|
|
Nras |
Forum-Meister
|
|
Beiträge: 608
|
|
|
|
Anmeldedatum: 21.02.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 7.12.0.635 (R2011a)
|
|
|
|
|
|
Verfasst am: 17.10.2014, 07:42
Titel:
|
|
Hallo,
mal unabhängig von deinem Code und nur auf dein anfängliches Beispiel bezogen: Die Anzahl und die Länge der Überschreitungen kannst du ganz ohne Schleife finden. Dazu kannst du die runlength-codierung benutzen.
Damit kommst du vielleicht weiter.
viele Grüße,
Nras.
|
|
|
Phippu |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.10.2014, 09:42
Titel:
|
|
Hallo Nras
Das war genau das, was ich gesucht habe! Super. Habe das gerade eingebaut und es macht jetzt genau das, was ich haben wollte.
Vielen herzlichen Dank!
Für Interessierte hier noch der Code:
Grüsse, Phippu
|
|
|
|
|
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.
|
|