WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Mittelwertbildung mit schwierigen Vorgaben

 

odomos
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 15.06.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.06.2018, 22:18     Titel: Mittelwertbildung mit schwierigen Vorgaben
  Antworten mit Zitat      
Hallo zusammen,

ich bin absolut unerfahren was Matlab angeht (von einfachsten Berechnungen einmal abgesehen) und wende mich daher mit einem Problem an euch, von welchem ich lediglich erst einmla wissen möchten, ob dieses mit Matlab zu lösen wäre oder eher nicht. Momentan mache ich alle Kalkulationen mit Excel, weiß jedoch, dass dieses hierbei mir nicht helfen kann.

Es geht um Folgendes:

Ich habe mehrere Datensätze mit jeweils 100 unterschiedlichen Zahlenwerten.
Mein Ziel ist es nun, aus diesem Zahlensatz einen Bereich herauszufiltern und mir den Mittelwert ausgeben zu lassen.
Folgende Schwierigkeiten müssen jedoch einbezogen werden:

1. In die Berechnung des Mittelwertes sollen nur solche Werte einbezogen werden, die vom auszugebenden Mittelwert nicht mehr als +- 5% abweichen.

2. Es müssen alle Werte innerhalb des Bereiches der für die Mittelwertbildung herangezogen wird, benutzt werden (also derjenige Bereich automatisch gesucht werden, in welchem alle Werte ohne Lücke +- 5% vom Mittelwert abweichen).

3. Matlab müsste diesen (lückenlosen) Bereich selbst "finden" aus allen Werten.

Ein vereinfachtes Beispiel:

Gegeben sind folgende Zahlenwerte: 9; 7; 2; 2; 2; 8; 7; 2; 9

Ist es möglich, alle Werte (also ohne Vorauswahl) als Input anzugeben und Matlab so zu programmieren, dass es selbstständig die Zahlenfolge 2; 2; 2 als größte zusammenhängende Folge (deren einzelne Glieder nicht mehr als 5% vom Mittelwert dieser Folge abweichen) erkennt und davon den Mittelwert errechnet?

Ist das verständlich?
Danke schon einmal für eventuelle Hilfe Smile
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 17.06.2018, 11:26     Titel: Re: Mittelwertbildung mit schwierigen Vorgaben
  Antworten mit Zitat      
Hallo odomos,

Die Frage ist noch nicht eindeutig.

Zitat:
Ich habe mehrere Datensätze mit jeweils 100 unterschiedlichen Zahlenwerten.
[...]
9; 7; 2; 2; 2; 8; 7; 2; 9

Die Beispieldaten passen nicht zur Beschreibung, denn die Wert sind nicht unterschiedlich.

Zitat:
1. In die Berechnung des Mittelwertes sollen nur solche Werte einbezogen werden, die vom auszugebenden Mittelwert nicht mehr als +- 5% abweichen.

Was ist das gewünschte Ergebnis für [5, 6, 7, 8, 81, 82, 83, 84]?

Zitat:
2. Es müssen alle Werte innerhalb des Bereiches der für die Mittelwertbildung herangezogen wird, benutzt werden (also derjenige Bereich automatisch gesucht werden, in welchem alle Werte ohne Lücke +- 5% vom Mittelwert abweichen).

Ich bin mir nicht sicher, ob dies ein stabiler Prozess ist. Wenn Der Bereich der berücksichtigten Werte eingeschränkt wird, ändert sich auch der Mittelwert wieder. Das könnte zu Oszillationen führen.

Zitat:
3. Matlab müsste diesen (lückenlosen) Bereich selbst "finden" aus allen Werten.

"Lückenlos betreffend der Position im Vektor oder betreffend des Werte-Bereichs, z.B. aufeinander folgende natürliche Zahlen?

Zitat:
Ist es möglich, alle Werte (also ohne Vorauswahl) als Input anzugeben und Matlab so zu programmieren, dass [...]

Ja. Zumindest falls die Aufgabenstellung als rekursiver Algorithmus definiert werden kann. Falls es programmierbar ist, ist es auch in Matlab programmierbar.

Versuche also nochmal das Problem eindeutig zu beschreiben.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
odomos
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 15.06.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2018, 20:25     Titel:
  Antworten mit Zitat      
Hallo Jan,

danke für deine Antwort.

Ich habe Zahlenwerte, welche Punkte auf einer Kurve repräsentieren. Und diese Kurve konvergiert gegen einen Wert. Die Konvergenz ist dann gegeben, wenn die Differenz von vielen aufeinanderfolgenden (lückenlos) Werten < +-5% vom Mittelwert eben dieser Werte beträgt.
Mein Problem ist, dass ich keinen festen Startzeitpunkt vorgeben kann (da dieser für alle Kurven unterschiedlich ist) und man auch keine Vorgabe diesbezüglich machen kann, dass etwa der letzte Punkt immer mitintegriert sein soll. Denn der Konvergenzbereich kann mitten in der Kurve liegen und im späteren Verlauf wieder davon abweichen.

Dein Beispiel mit der Zahlenfolge zeigt ein weiteres Problem, welches ich bisher jedoch ausgeklammert hatte, um es nicht noch komplizierter zu machen: Es kann in der Tat auch mehrere Konvergenzbereiche geben. Matlab müsste also auch erkennen, welcher Bereich der längste Konvergenzbereich ist und diesen für die Berechnungen nehmen.

Im Grunde müsste Matlab also für jeden möglichen Bereich zwischen zwei Zahlen, mit jedem Punkt als potenziellen Startzeitpunkt, eine Berechnung durchführen und darüber den größten Konvergenzbereich erkennen. Es handelt sich allerdings um etwa 1000 Zahlenwerte (sorry, im ersten Beitrag hatte ich etwas von 100 geschrieben).

Matlab müsste also die erste Zahl x1 als Startzeitpunkt nehmen und für alle einzelnen Bereich (x1+x2)/2 ; (x1+x2+x3)/3 ... (x1 ... +x1000)/1000 den Mittelwert und die jeweilige Abweichung der enthaltenen Zahlen berechnen.
Und das nicht nur für x1 als Startzeitpunkt, sondern auch für alle anderen Zahlen, x2 ... x1000.
Und daraus dann erkennen, in welchen dieser Berechnungen alle Werte nur +-5% vom eben berechneten Mittelwert abweichen. Und anschließend noch erkennen, welcher dieser Bereiche der längste ist (also derjenige mit den meisten Zahlenwerten).
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 17.06.2018, 23:19     Titel:
  Antworten mit Zitat      
Hallo odomos,

Das klingt "magnetisch". Stelle Dir vor, die Punkte wäre alle Magnete. Dann wird ein magnetischer Stab vertikal verschoben und man schaut nach, an welcher Höhe er am stärksten angezogen wird.
Das ist allerdings nicht trivial. Man muss dies iterativ lösen. Ich würde es mit einem Simulated Annealing Ansatz versuchen.
Hast Du eine Grundausbildung in Numerik und Angewandter Mathematik? Globale Optimierung?

findchangepts könnte hilfreich sein um Phasen zu identifizieren. Wenn Du dann durch die Punkte der einzelnen Phasen Geraden fittest ( polyfit ), kannst Du schnell die statischen Phasen finden und die 5%-Grenzen anwenden.

Insgesamt ist dies ein ambitioniertes Projekt. Matlab bietet alles dafür, was Du brauchst.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 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.