Interpolation in der Flaeche

28/05/2010 - 01:41 von Ralf . K u s m i e r z | Report spam
X-No-Archive: Yes

begin Thread


Moin!

Das übliche Verfahren zur Bestimmung eines Zwischenwerts ist wohl
"Gewichte die Meßwerte der drei nàchstgelegenen Sensoren mit deren
reziproken Abstànden". Das sieht auch eindimensional einigermaßen gut
aus, weil es einer linearen Interpolation entspricht.

Wird das eigentlich irgendwo mal ein bißchen theoretisch beleuchtet?

Mir hat wohl mal jemand erzàhlt, daß, wenn die Sensoren auf den
Gitterpunkten eines rechteckigen Rasters sitzen und man mit den vier
Ecken reziprok abszandsgewichtet interpoliert, die Zwischenwerte auf
Parallelen zu den Gitterkanten sich alle auf Geraden im Werteraum
befinden.

Mal schauen:

Nehmen wir mal die Sensorpositionen an den vier Ecken

b [0, b] --+-- [a, b]
| | |
| | |
| | |
| | |
y +- [x, y] +
| | |
| | |
| | |
0 [0, 0] --+-- [a, 0]

0 x a

Linear interpoliert zwischen den benachbarten Gitterpunkten kommt dann
also heraus:

f([0, 0])/x + f([a, 0])/(a-x)
f([x, 0]) = --
1/x + 1/(a-x)

f([0, b])/x + f([a, b])/(a-x)
f([x, b]) = --
1/x + 1/(a-x)

f([0, 0])/y + f([0, b])/(b-y)
f([0, y]) = --
1/y + 1/(b-y)

f([a, 0])/y + f([a, b])/(b-y)
f([a, y]) = --
1/y + 1/(b-y)

Hm, das paßt schon einmal. Und nun erst einmal waagerecht:

f([0, y])/x + f([a, y])/(a-x)
f([x, y]) = --
1/x + 1/(a-x)

= [ f([0, 0])/(x*y) + f([0, b])/[x*(b-y)] +
f([a, 0])/[(a-x)*y] + f([a, b])/[(a-x)*(b-y) ]
/ ( [1/x + 1/(a-x)] * [1/y + 1/(b-y)] )

Das ist offenbar dasselbe wie in senkrechte Richtung interpoliert:

f([x, 0])/y + f([x, b])/(b-y)
f([x, y]) = --
1/y + 1/(b-y)

Das "Rezept" besteht also offenbar darin, die Funktionswerte an den
Ecken mit den Flàchen der den Ecken diagonal gegenüberliegenden
Teilrechtecken zu multiplizieren (also z. B. wird f([0, 0]) mit
(a-x)*(b-y) multipliziert), die vier Produkte aufzusummieren und dann
durch die gesamte Rechteckflàche a*b zu dividieren.

Strange...

Man kann also zwei Bohlen im Abstand parallel auf den Boden legen.
Quer dazu legt man darauf nebeneinander eine Lage Fußbodenbretter, die
mit ihren Enden auf den beiden Bohlen aufliegen. Und dann legt man
senkrecht dazu noch eine weitere Schicht Fußbodenbretter
nebeneinander, also "über Kreuz" zu der darunterliegenden Schicht. Und
nun kann man an den vier Ecken unter die Bohlenenden beliebig
unterschiedlich hohe Klötze unterlegen, und trotzdem liegt die obere
Bretterschicht jeweils immer in der ganzen Lànge auf der "verwundenen"
unteren Bretterschicht auf... (bei unendlich schmalen Brettern
natürlich nur).

Ob das nun was mit den reziproken Abstànden zu tun hat, ist mir
eigentlich nicht so recht klar.

Also mal andersherum gefragt: Auf der Landkarte sind ziemlich viele
Sensoren verteilt, die jeweils einen lokalen Meßwert liefern. Nun
nimmt man irgendeinen Ort auf der Karte und will für diesen einen
interpolierten Wert aus den Meßwerten angeben. Wie macht man das am
sinnvollsten? Anschaulich sollte man annehmen, daß man eine gewichtete
Summe aus den nàchstliegenden Sensoren rings herum bilden und die um
so niedriger gewichten sollte, je weiter sie weg sind.

Wenn man als Gewichte die reziproken Abstànde nimmt, dann wird das
Funktionswertefeld etwas kantig und eckig. Einen "glatteren" Übergang
erhàlt man z. B., wenn man anstatt mit den reziproken Abstànden mit
deren Quadraten gewichtet. Bei dem o. a. Rechteck würde das der
Gewichtung mit den Quadraten der diagonal gegenüberliegenden
Teilrechteckflàchen entsprechen.

Aber welches Verfahren ist "richtig", vor allem, wenn die Stützpunkte
wie im wahren Leben nicht auf einem Gitterraster liegen, sondern etwas
zufàlliger verteilt sind?


Gruß aus Bremen
Ralf
R60: Substantive werden groß geschrieben. Grammatische Schreibweisen:
adressiert Appell asynchron Atmosphàre Autor bißchen Ellipse Emission
gesamt hàltst Immission interessiert korreliert korrigiert Laie
nàmlich offiziell parallel reell Satellit Standard Stegreif voraus
 

Lesen sie die antworten

#1 Frank Buss
28/05/2010 - 06:27 | Warnen spam
Ralf . K u s m i e r z wrote:

Aber welches Verfahren ist "richtig", vor allem, wenn die Stützpunkte
wie im wahren Leben nicht auf einem Gitterraster liegen, sondern etwas
zufàlliger verteilt sind?



Ein Ansatz wàre vielleicht, auf Verfahren aus der Computergrafik
zurückzugreifen. Zunàchst mal eine Delaunay Triangulation durchführen:

http://de.wikipedia.org/wiki/Delaun...angulation

Die Sensorpositionen auf dem Gitter sind dabei die x/y-Koordinaten und die
Messwerte z-Koordinaten zu den jeweiligen Messpunkten. Die dann sehr leicht
zu berechnenden z-Koordinaten der Dreiecksflàchen zu gegebenen
x/y-Kooridnaten sind dann deine gemittelten Messwerte.

Wenn du keine abrupten Übergànge an den Messpunkten haben willst, könnte
man es auch noch per Subdivision Surface verfeinern (mit einem
interpoliereden Schemata, damit die Messwerte auf der resultierenden Flàche
liegenbleiben).

http://de.wikipedia.org/wiki/Subdivision_Surface

Kann man wahrscheinlich auch auf mehrere Dimensionen erweitern, falls du
z.B. Messpunkte mit 3 Dimensionen beschreiben willst und dann noch einen
oder mehrere Messwerte pro Messpunkt hast, was mathemtatisch dann
interessanter werden könnte.

Frank Buss,
http://www.frank-buss.de, http://www.it4-systems.de

Ähnliche fragen