Montag, 12. Januar 2009

Lineare Interpolation


Neulich im Internet!
Gesucht und gesucht und doch nicht gefunden und dann selbst gemacht:

Für die Erstellung linearer Interpolationen als Massenoperation in der Tabellenkalkulation Excel habe ich folgende Funktion angefertigt. Diese kann frei verwendet werden. Für mögliche Fehler hafte ich nicht, falls ihr sie jedoch verbessert, würde ich mich riesig über den kommentierten und verbesserten Quellcode freuen.



======================== Anfang =======================

  • 'Interpoliert einen Punkt aus einer Tabelle von x, y -Punkten nach der Methoder der Linearen Interpolation
  • Function Interpol_Lin(Xin As Range, Yin As Range, Xtarget As Double)
  • Dim n%, ny% 'Xin and Yin Counter
  • Dim i%, X_index 'Schleifen Counter

  • ny = Yin.Cells.Count
  • n = Xin.Cells.Count

  • ' Prüfe ob die gleiche Anzahl x und y Punkte gegeben ist
  • If n <> ny Then
  • Interpol_Lin = CVErr(xlErrRef) 'Uneven counts of Xin and Yin"
  • GoTo err_ret
  • End If

  • ReDim x(1 To n) As Double
  • ReDim Y(1 To n) As Double

  • 'Fülle x[] und y[] auf
  • For i = 1 To n
  • x(i) = Xin(i)
  • Y(i) = Yin(i)
  • Next i
  • i = 1

  • 'finde den korrekten Intervall
  • Do While (Xtarget > x(i))
  • X_index = i
  • i = i + 1
  • Loop

  • Interpol_Lin = (Y(X_index + 1) - Y(X_index)) / (x(X_index + 1) - x(X_index)) * (Xtarget - x(X_index)) + Y(X_index)

  • err_ret:

  • End Function
======================== ENDE =======================

Gruß Chiochip

Keine Kommentare: