Entwickler-Ecke

Algorithmen, Optimierung und Assembler - Interpolation in C#


chris85s - Di 25.05.10 13:57
Titel: Interpolation in C#
Hallo,

ich habe eine Tabelle in der x-Werte und dazugehörige y-Werte vorhanden sind.

C#-Quelltext
1:
2:
3:
4:
...
new double[] { 0.02.02.12.22.32.44.35.35.86.36.87.37.88.38.8 },
new double[] { -10.0, -10.0100.0200.0300.0365.0365.0320.0270.0220.0170.0120.070.020.0, -10.0 }
...


Also am x-Werte 0.0 erhält man den y-Wert -10.0, usw.

Ich benutzte diese Tabelle um eine Kurve zu zeichnen.
Das funktioniert soweit auch.

Nun möchte ich aber eine möglichst glatte Kurve.
D.h. die Ecken sollen verschwinden.
Ich denke die Interpolation wäre hier hilfreich.

Leider weiß ich nicht wie ich das in C# umsetzen kann.

Am Ende sollte es eben so sein, das ich eine Tabelle oder etwas ähnliches haben, welche nicht nur die oben angegebenen x-Werte und y-Werte hat, sondern auch x-Werte dazwischen mit dazugehörigen y-Werten.
Diese möchte ich dann zeichen.

Würde mich über eure Hilfe freuen.

mfg chris

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt


Kha - Di 25.05.10 14:33

Die Mathematik dahinter ist dir klar? Für welche Interpolationsart hast du dich denn entschieden?

Zeig uns doch bitte, was du schon versucht bzw. dir überlegt hast und wo genau du hängen bleibst.


chris85s - Di 25.05.10 14:46

ja die Mathematik ist dabei kein problem.
eher die umsetzung.

mir würde für den anfang die lineare interpolation schon reichen.

leider habe ich bisher noch gar keinen ansatz dafür.
liegt wohl auch daran das ich nicht sehr programmier erfahren bin.

ich könnte mir natürlich möglichst viele werte mit stift und papier ausrechnen und dann in eine tabelle schreiben.
nur das wäre ziemlich langwirrig.

wäre eben gut wenn ich was programmieren könnte, wodurch ich schnell möglichst viele werte bekommen kann, damit die kurve glatt wird.


Christian S. - Di 25.05.10 14:55

user profile iconchris85s hat folgendes geschrieben Zum zitierten Posting springen:
ja die Mathematik ist dabei kein problem.
eher die umsetzung.

mir würde für den anfang die lineare interpolation schon reichen.

Sicher, dass die Mathematik kein Problem ist? Mit linearer Interpolation bleiben die Ecken nämlich drin ;-) Ich würde eher in Richtung Spline gehen.


chris85s - Di 25.05.10 15:02

ok spline ist natürlich besser.
aber darauf kam es mir noch nicht an.

wollte erstmal generel wissen wie ich das machen kann


chris85s - Mi 26.05.10 11:03

noch jemand da der mir dabei helfen kann?


Christian S. - Mi 26.05.10 11:11

Wahrscheinlich geht es den meisten wie mir: Ich habe keine Ahnung, wo genau Du nicht weiter kommst. Was hast Du bisher versucht, welche Gedanken hast Du Dir gemacht?


Th69 - Mi 26.05.10 13:17

Hallo chris85s,

schau dir mal die Graphics.DrawCurve()-Methode an: http://msdn.microsoft.com/en-us/library/554h284b.aspx