| |
|
|
Walter Köhler | ¡Hola Profaner Yo habe una Problema y todavía no Lösungsansatz. Problembeschreibung: Yo nehme con uno Kamera una bewegtes Objeto en, y registriere el X/Y Koordinaten su en uno Liste. Dann bilde Yo, el Weg des Objeto mittels "Lineto" después de. So weit tan bueno. Problema: El Objektverfolgung es no muy genau, el Linie es por lo tanto algo zitterig. Yo habe einiges encima "glätten" gegoogelt, (Bezier etc, ) aber el me está de el Matte her a hoch; sorry. Sombrero Alguien una Concepto Yo una unregelmäßige "zitterige" Kurve glätten kann Walter Profano 11.2 |
|
|
| |
|
|
|
RAW | ¡Hola,
sin ahora en Execl o. ä. a verweisen, restos con profanen Mitteln sólo el Möglichkeit, una eigenen Filter a escribir. Um Kurvenwerte a glätten (engl. smooth) querer wir ahora veces smoothen:
Der einfachste Weg es una gedachtes Quadrat, para Ejemplo 3 x 3 Kästchen (oder 5 x 5, usw.), de el aktuellen Valor después de vorne en el mögliche Kurve a legen y el Mittelwert el linken Reihe - el mittleren Reihe y rechten Reihe auszurechnen. So voluntad Ausreißer (después de +y / -y) geglättet. In esta Kästchen puede auch todavía spezielle Filterwerte hinzugerechnet voluntad (z. B. -2,-1,0,+3,+3), así el allg. Principio. Den aktuellen Mittelwert erhält uno, si z.B. el letzten (hinteren) 3 Werte gemittelt voluntad.
Filter puede mehrmals verwendet voluntad. Je glatter se el Kurve... |
|
|
| |
|
|
|
p.specht
| Ist weit lejos su, una solución a el problema a ser, porque uno como viel adaptar muss, z.B. x y y vertauschen. Aber el Principio sería denke Yo passen. Das Teil es no de me, y allfällige Rechte Dritter müssten sólo geprüft voluntad. Also: Ohne jedwede Garantie y rein a Demonstrationszwecken:
Título de la ventana "Interpolation zw. Stützwerten por Polynomkoeffizienten-Anpassung"
Ventana de Estilo 24:randomize:CLS rnd(8^8):font 2:set("decimals",18)
'{********************************************************
'* Polynomial Interpolation or Extrapolation *
'* of a Discreet Function F(x) *
'* ----------------------------------------------------- *
'* SAMPLE RUN: *
'* (Example: Function sin(x) - 2*cos(x) is given by 12 *
'* points from x=0 to x=1.1. *
'* Extrapolate for x=1.255). *
'* *
'* For X = 1.255 *
'* Estimated Y value = .3294023272245815 *
'* Estimated Error = -8.273064603451457E-11 *
'* Exact Y value = .3294023272200048 *
'* *
'* ----------------------------------------------------- *
'* REFERENCE: "Numerical Recipes, The Art of Scientific *
'* Computing By W.H. Press, B.P. Flannery, *
'* S.A. Teukolsky and W.T. Vetterling, *
'* Cambridge University Press, 1986" *
'* *
'* Basic Release By J-P Moreau, Paris. *
'* (www.jpmoreau.fr) *
'*********************************************************
'* *
'* XProfan-Versión 2014-10 by P.Pájaro carpintero, Wien *
'* *
'*********************************************************
'}
' PROGRAM TEST_POLINT
Var n&=12' Number of points
Declarar X![N&],Y![N&],C![N&],D![N&]
Declarar i&,x1!,xx!,fct!,yy!,DY!
REPEAT
' El Stützwerte müssten NICHT necesariamente en gleichen Abständen mentira!
' define tables X and Y 'ACHTUNG: ARRAY WIRD MIT BASISINDEX 1 GEFÜHRT!
X![1] = 0.0
X![2] = 0.1
X![3] = 0.2
X![4] = 0.3
X![5] = 0.4
X![6] = 0.5
X![7] = 0.6
X![8] = 0.7
X![9] = 0.8
X![10]= 0.9
X![11]= 1.0
X![12]= 1.1
Whileloop n&:i&=&Loop
X1! = X![I&]
FCT!=FCT(X1!)
Y![I&] = FCT!
Endwhile
proc FCT :parámetros x1!
' FUNCTION FCT(X1) ' Statt Tabelleneingabe el Y-Stützwerte
' se hier una bekannte Función herangezogen.
' Das erlaubt una Prüfung el Genauigkeit el Interpolation
FCT! = SIN(X1!) - 2.0 * COS(X1!)
RETORNO FCT!
ENDPROC
' ANWENDUNG DES GEFUNDENEN POLYNOMS
' Vorgabe uno X-Wertes y Abfrage el intern gefundenen Interpolationsformel
imprimir "\n EINGABE: X-Valor, para el Y a interpolieren es "
imprimir " (En X=0 se eingebauter Testwert 1.255 verwendet) X = ";
input xx! : caso xx!=0 : XX! = 1.255
' INTERPOLATION
yy!=POLINT(X1!,N&,XX!,YY!)
' AUSGABE
caso %csrlin>20:cls rnd(8^8)
PRINT
PRINT " Für el gesuchte X = ";format$("%g",XX!)
PRINT " Interpolierter Y-Valor = ";format$("%g",YY!)
PRINT " Letzte Corrección = ";format$("%g",DY!)
X1! = XX! : FCT!=FCT(X1!)
PRINT " Exakter Vergleichswert = ";format$("%g",FCT!)
PRINT "--------------------------------------------------\n"
UNTIL 0
proc STOP :sound 2000,100: waitinput:FIN
ENDPROC
Proc POLINT :parámetros X!,N&,XX!,YY!
'*****************************************************
' Origianl-Subroutine: POLINT(X,Y,N,XX,YY,DY) *
'*****************************************************
'* Polynomial Interpolation or Extrapolation *
'* of a Discreet Function *
'* ------------------------------------------------- *
'* INPUTS: *
'* X: Table of abscissas (N) *
'* Y: Table of ordinates (N) *
'* N: Number of points *
'* XX: Interpolation abscissa value *
'* OUTPUT: *
'* YY: Returned estimation of function for X *
'* DY: Estimated error for YY *
'*****************************************************
Declarar NS&,dif!,dift!,C![n&],D![n&],m&,ho!,hp!,w!,el!
NS& = 1
DIF! = ABS(XX! - X![1])
whileloop n&:i&=&Loop
DIFT! = ABS(XX! - X![1])
IF DIFT! < DIF!
NS& = I&'index of closest table entry
DIF! = DIFT!
ENDIF
C![I&] = Y![I&]'Initialize the C"s and D"s
D![I&] = Y![I&]
endwhile
YY! = Y![NS&]'Initial approximation of Y
NS& = NS& - 1
whileloop n&-1:m&=&Loop
whileloop n&-m&:i&=&Loop
HO! = X![I&] - XX!
HP! = X![I& + M&] - XX!
W! = C![I& + 1] - D![I&]
DEN! = HO! - HP!
IF DEN! = 0
PRINT
PRINT " *** FEHLER: ZWEI STÜTZWERTE WIDERSPRECHEN SICH! *** "
STOP
ENDIF
DEN! = W! / DEN!
D![I&] = HP! * DEN!'Actualización the C's and D's
C![I&] = HO! * DEN!
endwhile
IF (2*NS&) < (N&-M&)' After each column en the tableau XA is completed,
DY! = C![NS&+1]' we decide which correction, C or D, we want to
ELSE' add to our accumulating value of Y, i.e. which
DY! = D![NS&]' path to take through the tableau, forking up or
NS& = NS& - 1' down. We do this en such a way as to take the
ENDIF' most "straight line" route through the tableau to
' its apex, updating NS accordingly to keep track
YY! = YY! + DY!' of where we are. This route keeps the partial
endwhile' approximations centered (insofar as possible) on
' the target X.The last DY added is thus the error
RETORNO YY!' indication.
endpro
Wichtig: No a viele Stützwerte, sonst se el Sache más todavía zittriger! El manuelle Entrada-Bucle wäre entonces por el deseado Zwischenwerte a sustituir y como Punkte con kurzen Lineto-Stücken einzutragen. Alternativ podría uno auch una "gleitenden Durchschnitt" de 3 a 5 Punkten forma. |
|
|
| Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 21.09.2018 ▲ |
|
|
|
|
RAW | Hier una einfaches Praxis-Ejemplo de obigem Contribución, en Ausreißer en uno Kurve a glätten:
Beispielwerte uno ansteigenden Kurve (y-Werte): 114, 116, 120, 123, 124, 127, 129, 150, 133, 136 / Ausreißer 150
Nehmen wir a, wir posición al Punkt 127 (en x-Richtung el 6. Punkt). Der Mittelwert el vorderen 3 Werte de 129, 150, 133 lautet: 137 / Ausreißer 150 Der größte Valor de 150 se ahora a 137. Wiederholung el vorderen 3 Werte de 129, 137, 133 ergibt 133.
Nun sustituir wir el vorderen 3 Werte con el Valor 133 - voila... / glattere Kurve
Als Lösungsansatz dürfte dieses Ejemplo vollends genügen. |
|
|
| |
|
|
|
Unterthema: Kurve glätten gelöst [...] producido. |
|
|
| |
|
|