Autor |
Beitrag |
Tux87 (Tux87)
Erfahrenes Mitglied Benutzername: Tux87
Nummer des Beitrags: 300 Registriert: 12-2002
| Veröffentlicht am Mittwoch, den 12. November, 2003 - 19:38: |
|
Hi @ll, kann mir jemand hier weiterhelfen: Ich bekomme von einem Sensor 15 x und 15 y - Koordinaten. Nun muss ich aus diesen Koordinaten eine Funktion suchen, die durch diese 15 Punkte verläuft. Das ganze Problem soll in einem C++ Programm umgesetzt werden. Hat jemand sowas oder kann mir jemand sagen, wie ich das am Besten machen sollte... PS: Gauscher Algorhythmus geht nicht -- die Zahlen werden bei mir selbst für double zu groß... danke schon mal ICH mfG ICH
|
Martin243 (Martin243)
Senior Mitglied Benutzername: Martin243
Nummer des Beitrags: 866 Registriert: 02-2001
| Veröffentlicht am Mittwoch, den 12. November, 2003 - 19:43: |
|
Bist du sicher, dass es ein Polygon 14. Grades werden muss? Oder sollst du eher eine Näherungsfunktion suchen? Denn ich kann mir nicht vorstellen, dass du ein Gleichungssystem mit 15 Unbekannten lösen sollst... MfG Martin ________ Die Natur spricht die Sprache der Mathematik: Die Buchstaben dieser Sprache sind Dreiecke, Kreise und andere mathematische Figuren. Galileo Galilei
|
Tux87 (Tux87)
Erfahrenes Mitglied Benutzername: Tux87
Nummer des Beitrags: 302 Registriert: 12-2002
| Veröffentlicht am Mittwoch, den 12. November, 2003 - 21:32: |
|
Hi Martin, ja, ich bin mir sicher. Diese x^15 ist bereits eine Näherungsfunktion! Würde ich sie komplett genau machen, müsste ich x^200 nehmen! x^15 muss min. sein -- brauche das für Herz-Kreislaufwerte und die sollten schon genau sein.
mfG ICH
|
Sotux (Sotux)
Erfahrenes Mitglied Benutzername: Sotux
Nummer des Beitrags: 141 Registriert: 04-2003
| Veröffentlicht am Mittwoch, den 12. November, 2003 - 23:02: |
|
Polynom 14 Grades erscheint mir eher ungeeignet, normalerweise wird sowas mit B-splines gemacht, dann läuft es auf die Lösung eines Gleichungssystems mit Bandmatrizen raus, es gibt aber auch einen rekursiven Algorithmus. Wenn die Punkte vernünftig sind sollte das funktionieren. |
Zaph (Zaph)
Senior Mitglied Benutzername: Zaph
Nummer des Beitrags: 1514 Registriert: 07-2000
| Veröffentlicht am Donnerstag, den 13. November, 2003 - 19:52: |
|
Mit Verlaub, aber die Messpunkte durch ein Polynom 14. Grades zu interpolieren ist kompletter Schwachsinn!! Versuch mal nur vier oder fünf Messpunkte zu nehmen, und sieh dir an, wie sich dann das Interpolationspolynom in den Stellen zwischen den Messstellen verhält. Ich glaube kaum, dass du das möchtest. |
Tux87 (Tux87)
Erfahrenes Mitglied Benutzername: Tux87
Nummer des Beitrags: 303 Registriert: 12-2002
| Veröffentlicht am Donnerstag, den 13. November, 2003 - 22:08: |
|
Ok -- dann hier mal die Aufgabe ganz von vorn (es muss C++ sein): Ich bekomme von einem optischen Sensor 50, 100 oder 200 Messwerte pro Sekunde. Diese Messwerte ergeben eine Kurve. Nun brauche ich den Mittelwert der 1. Ableitungen der Anstiegsflanken. http://www.lm.se/geodesi/astronomi/funktion.gif Es sieht ungefair so aus wie die rote Linie. Wie soll ich das also machen? Es sollte möglichst genau sein und innerhalb von einer halben Minute vom PC zu berechnen sein... mfG ICH
|
Sotux (Sotux)
Erfahrenes Mitglied Benutzername: Sotux
Nummer des Beitrags: 144 Registriert: 04-2003
| Veröffentlicht am Donnerstag, den 13. November, 2003 - 22:31: |
|
Wenn deine Kurve so problemlos ist brauchst du noch nicht mal BSplines, sondern machst einfach im Bereich der Anstiegsflanken (also etwas nach dem lokalen Minimum und vor dem lokalen Maximum) eine lineare Regression und nimmst deren Steigung als Schätzer für den dortigen Anstieg. |
Martin243 (Martin243)
Senior Mitglied Benutzername: Martin243
Nummer des Beitrags: 868 Registriert: 02-2001
| Veröffentlicht am Donnerstag, den 13. November, 2003 - 22:38: |
|
Hi! Wenn du beispielsweise 50 diskrete Punkte hast, warum nimmst du dann nicht einfach die Steigungen von einem Punkt zum nächsten? Genauer kannst du es eh nicht machen, denn dann setzt du ja voraus, dass die Kurve so verläuft, wie du es dir vorstellst. Mal als Beispiel:
x | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | y | 0.67 | 1.2 | 1.5 | 1.53 | 1.33 | 1 | 0.67 | 0.47 | 0.5 | 0.8 | Dann würde ich jetzt einfach mal die Steigungen zwischen je zwei aufeinanderfolgenden Punkten berechnen, die negativen weglassen (wegen der Anstiegsflanken, wenn ich das richtig verstanden habe) und dann den Mittelwert bilden: [(1.2-0.67)+(1.5-1.2)+(1.53-1.5)+(0.5-0.47)+(0.8-0.5)]/5 = 0.238 Ich habe keine Ahnung, ob das im Sinne der Aufgabe ist, aber du siehst an den Antworten, dass du mit dem Polynom nicht weiterkommst. Außerdem brauchst du ja kiene genaue Funktion! Man differenziert hier im Diskreten... Übrigens habe ich für das Beispiel die Funktion f(x) = x/6 + sin(px/6) genommen, weil sie der Funktion auf dem Bild etwas ähnelt und auch so schöne Anstiegsflanken hat. MfG Martin (Beitrag nachträglich am 13., November. 2003 von Martin243 editiert) (Beitrag nachträglich am 13., November. 2003 von Martin243 editiert) ________ Die Natur spricht die Sprache der Mathematik: Die Buchstaben dieser Sprache sind Dreiecke, Kreise und andere mathematische Figuren. Galileo Galilei
|
Tux87 (Tux87)
Erfahrenes Mitglied Benutzername: Tux87
Nummer des Beitrags: 304 Registriert: 12-2002
| Veröffentlicht am Donnerstag, den 13. November, 2003 - 23:38: |
|
Das Bild ist nicht wirklich das, was ich suche -- kann das wirkliche Bild nur gerade nicht einscannen. Meine Kurve ist nicht ganz so einfach. Ich werd versuchen in den nächsten Tagen mal einen Screenshot hochzuladen... mfG ICH
|
Martin243 (Martin243)
Senior Mitglied Benutzername: Martin243
Nummer des Beitrags: 869 Registriert: 02-2001
| Veröffentlicht am Donnerstag, den 13. November, 2003 - 23:59: |
|
Dennoch ist es keine Kurve, denn du hast doch nur eine Reihe von Punkten vorliegen. Eine Frage: Wenn du deine Funktion doch irgendwie berechnet hast, an welchen Punkten willst du die Ableitung denn berechnen, um dann den Mittelwert zu bilden? MfG Martin ________ Die Natur spricht die Sprache der Mathematik: Die Buchstaben dieser Sprache sind Dreiecke, Kreise und andere mathematische Figuren. Galileo Galilei
|
Tux87 (Tux87)
Erfahrenes Mitglied Benutzername: Tux87
Nummer des Beitrags: 305 Registriert: 12-2002
| Veröffentlicht am Freitag, den 14. November, 2003 - 14:28: |
|
Hi, ich mache bei allen Punkten, die ich dann hab (ca. 200 Stück pro Sekunde) die 1. Ableitung (auße, wenn der PC zu lange braucht um es auszurechnen)...
mfG ICH
|
Martin243 (Martin243)
Senior Mitglied Benutzername: Martin243
Nummer des Beitrags: 870 Registriert: 02-2001
| Veröffentlicht am Freitag, den 14. November, 2003 - 16:20: |
|
Ja, aber geht es denn nicht nur um die Anstiegsflanken? Außerdem ist klar, dass die Ableitung bei xi nicht weit entfernt sein wird von der Steigung zwischen (xi-1,yi-1) und (xi+1,yi+1). Auf jeden Fall bin ich gespannt auf die Kurve. Ich glaube, ich brauche hier mal so etwas wie Erfahrungswerte... MfG Martin ________ Die Natur spricht die Sprache der Mathematik: Die Buchstaben dieser Sprache sind Dreiecke, Kreise und andere mathematische Figuren. Galileo Galilei
|
Tux87 (Tux87)
Erfahrenes Mitglied Benutzername: Tux87
Nummer des Beitrags: 306 Registriert: 12-2002
| Veröffentlicht am Samstag, den 15. November, 2003 - 08:47: |
|
doch, es geht nur um die Anstiegsflanke - von einem lokalen Minimum zu einem lokalen Maximum -- nur immer wieder diesen Bereich. Ich bekomme nachher nen Screenshot von dem Programm, dass die Kurve erstellt und dann lad ich den hoch...
mfG ICH
|
Tux87 (Tux87)
Erfahrenes Mitglied Benutzername: Tux87
Nummer des Beitrags: 307 Registriert: 12-2002
| Veröffentlicht am Sonntag, den 16. November, 2003 - 15:35: |
|
hab nen Screenshot:
mfG ICH
|
Mainziman (Mainziman)
Senior Mitglied Benutzername: Mainziman
Nummer des Beitrags: 580 Registriert: 05-2002
| Veröffentlicht am Sonntag, den 16. November, 2003 - 23:19: |
|
Die Kurve sieht mich mächtig kompliziert an, kann mir ehrlich gesagt nicht vorstellen eine Funktionsvorschrift als Polynom hinzukriegen eher in einer FourierTransformation, zumindest was die rote Kurve angeht; Gruß, Walter
Mainzi Man, ein Mainzelmännchen-Export, das gerne weiterhilft oder auch verwirren kann *ggg*
|
Martin243 (Martin243)
Senior Mitglied Benutzername: Martin243
Nummer des Beitrags: 872 Registriert: 02-2001
| Veröffentlicht am Montag, den 17. November, 2003 - 14:43: |
|
Aaah, so sieht das also aus. Ist der Patient tot? Sieht nämlich nicht gesund aus... Wie auch immer: Kannst du uns jetzt noch sagen, wie viele Werte wir jetzt ungefähr sehen? Oder anders: Wie vielen Sekunden enspricht denn eine Fensterbreite? Mich interessiert nämlich, wie gut die Auflösung ist und ob man daraus einen vernünftigen Kurvenverlauf bekommt. MfG Martin ________ Die Natur spricht die Sprache der Mathematik: Die Buchstaben dieser Sprache sind Dreiecke, Kreise und andere mathematische Figuren. Galileo Galilei
|
Tux87 (Tux87)
Erfahrenes Mitglied Benutzername: Tux87
Nummer des Beitrags: 308 Registriert: 12-2002
| Veröffentlicht am Montag, den 17. November, 2003 - 16:43: |
|
@Mainziman: mir ist eigentlich egal, wie ich die 1. Ableitung hinbekomme (kenne halt bisher nur die Möglichkeit mit x^15... Ich freu mich aber auch über ne andere Lösung (hauptsache es funktioniert) ;) Der optische Sensor schickt mir entweder 50, 100 oder 200 Werte! Die gesamte Breite sind 20 Sekunden.
mfG ICH
|
Mainziman (Mainziman)
Senior Mitglied Benutzername: Mainziman
Nummer des Beitrags: 582 Registriert: 05-2002
| Veröffentlicht am Mittwoch, den 19. November, 2003 - 00:18: |
|
Hi, so wie die Kurve aussieht kann ich mir nur eine Fourier-Transformation vorstellen, aber ob die dem gerecht wird, daß sie in Echtzeit bestimmt werden kann ... Mathematica liefert das mit: Plot[Sin[t] + Sin[10t], {t, -5, 5}] und das scheint mir eine sehr regelmäßige Kurve, welche als "Grundlage" für Deine Kurve dienen könnte; Gruß, Walter Mainzi Man, ein Mainzelmännchen-Export, das gerne weiterhilft oder auch verwirren kann *ggg*
|
Martin243 (Martin243)
Senior Mitglied Benutzername: Martin243
Nummer des Beitrags: 882 Registriert: 02-2001
| Veröffentlicht am Mittwoch, den 19. November, 2003 - 11:05: |
|
Hi! Schön, dass du damit herumspielst. Ich hatte zum Ausprobieren f(x) = sin(9x) + sin(9x/3.5) herangezogen. Verläuft ziemlich ähnlich, nur in einem anderen Maßstab. Dennoch glaube ich, dass Tux87 da immer noch meckern wird... Ich bleibe immer noch dabei: Es reicht, wenn man diskret differenziert, indem man den sog. Vorwärtsgradienten bildet (zumindest habe ich es unter dem Namen kennengelernt): f'(x) := [f(x+Dx) + f(x)] / Dx Ich habe dann bei meiner Beispielfunktion auch die "normale" Ableitung gebildet und dann beide so berechnete Durchschnittssteigungen der Anstiegsflanken berechnet. Das Ergebnis: kontinuierlich: 6.09255 diskret: 6.09208 Das macht dann eine Abweichung von 0,0077%, müsste also ausreichend sein. Ich gehe auch davon aus, dass das mit den etwas weniger regelmäßigen Daten von Tux87 klappen würde. Nur kenne ich die ja nicht und diese aus dem Bild zu extrahieren wäre reichlich mühsam... MfG Martin ________ Die Natur spricht die Sprache der Mathematik: Die Buchstaben dieser Sprache sind Dreiecke, Kreise und andere mathematische Figuren. Galileo Galilei
|
Mainziman (Mainziman)
Senior Mitglied Benutzername: Mainziman
Nummer des Beitrags: 583 Registriert: 05-2002
| Veröffentlicht am Mittwoch, den 19. November, 2003 - 11:21: |
|
Hallo Martin, ja diskret ableiten würde mir da auch zusagen, weil ich nämlich stark bezweifle, daß eine FFT und dann die dazugehörende Ableitung schnell genug gehen ... und die diskrete Ableitung hat Tux87 ja fast gegeben Gruß, Walter Mainzi Man, ein Mainzelmännchen-Export, das gerne weiterhilft oder auch verwirren kann *ggg*
|
Tux87 (Tux87)
Erfahrenes Mitglied Benutzername: Tux87
Nummer des Beitrags: 311 Registriert: 12-2002
| Veröffentlicht am Donnerstag, den 20. November, 2003 - 05:03: |
|
Hi Martin & Mainzimann, wenn die Abweichung wirklich in so einem geringen Maße bleibt, dann werd ich das mal versuchen. Danke nochmal...
mfG ICH
|
Mainziman (Mainziman)
Senior Mitglied Benutzername: Mainziman
Nummer des Beitrags: 584 Registriert: 05-2002
| Veröffentlicht am Donnerstag, den 20. November, 2003 - 06:57: |
|
Mainzi Man, ein Mainzelmännchen-Export, das gerne weiterhilft oder auch verwirren kann *ggg*
|
Martin243 (Martin243)
Senior Mitglied Benutzername: Martin243
Nummer des Beitrags: 886 Registriert: 02-2001
| Veröffentlicht am Donnerstag, den 20. November, 2003 - 08:07: |
|
Doppel- ________ Die Natur spricht die Sprache der Mathematik: Die Buchstaben dieser Sprache sind Dreiecke, Kreise und andere mathematische Figuren. Galileo Galilei
|