Spline2D (FPScript)
Interpoliert einen zweidimensionalen Datensatz durch ein Gitter von Spline-Kurven und tastet diese an vorgebbaren Stellen ab.
Syntax
Spline2D(Surface, NX, NZ, SamplingMode, [ VX1 = 0 ], [ VXn = 0 ], [ VZ1 = 0 ] [ , VZn = 0 ])
oder
Spline2D(DataMatrix, LocusX, LocusZ, NX, NZ, SamplingMode, [ VX1 = 0 ], [ VXn = 0 ], [ VZ1 = 0 ] [ , VZn = 0 ])
Die Syntax der Spline2D-Funktion besteht aus folgenden Teilen:
Teil |
Beschreibung |
||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Surface |
Die Datenmatrix oder die Signalreihe mit Z-Komponente mit konstantem Abtastintervall, welche interpoliert wird. Fehlen die X- und Z-Komponenten, so werden sie automatisch generiert. Erlaubte Datenstrukturen sind Datenmatrix und Signalreihe. Es sind alle numerischen Datentypen erlaubt. Bei komplexen Datentypen erfolgt eine Betragsbildung. Ist das Argument eine Liste, dann wird die Funktion für jedes Element der Liste ausgeführt und das Ergebnis ist ebenfalls eine Liste. |
||||||||||||||||
DataMatrix |
Datenmatrix mit der Y-Komponente der zu interpolierenden Signalreihe. Wenn Sie eine Signalreihe angeben, wird deren Y-Komponente verwendet. Erlaubte Datenstrukturen sind Datenmatrix und Signalreihe. Es sind alle numerischen Datentypen erlaubt. Bei komplexen Datentypen erfolgt eine Betragsbildung. Ist das Argument eine Liste, dann wird deren erstes Element entnommen. Ist dies wieder eine Liste, dann wird der Vorgang wiederholt. |
||||||||||||||||
LocusX |
Datenreihe mit der X-Komponente der zu interpolierenden Signalreihe. Wenn Sie ein Signal angeben, wird dessen Y-Komponente verwendet. Erlaubte Datenstrukturen sind Datenreihe und Signal. Es sind alle numerischen Datentypen erlaubt. Ist das Argument eine Liste, dann wird deren erstes Element entnommen. Ist dies wieder eine Liste, dann wird der Vorgang wiederholt. |
||||||||||||||||
LocusZ |
Datenreihe mit der Z-Komponente der zu interpolierenden Signalreihe. Wenn Sie ein Signal angeben, wird dessen Y-Komponente verwendet. Erlaubte Datenstrukturen sind Datenreihe und Signal. Es sind alle numerischen Datentypen erlaubt. Ist das Argument eine Liste, dann wird deren erstes Element entnommen. Ist dies wieder eine Liste, dann wird der Vorgang wiederholt. |
||||||||||||||||
NX |
Gibt die Anzahl der Punkte insgesamt bzw. pro X-Intervall des Signals an. Erlaubte Datenstrukturen sind Einzelwert. Es sind alle ganzzahligen Datentypen erlaubt. Der Wert muss größer gleich 0 sein. Ist das Argument eine Liste, dann wird deren erstes Element entnommen. Ist dies wieder eine Liste, dann wird der Vorgang wiederholt. |
||||||||||||||||
NZ |
Gibt die Anzahl der Punkte insgesamt bzw. pro Z-Intervall des Signals an. Erlaubte Datenstrukturen sind Einzelwert. Es sind alle ganzzahligen Datentypen erlaubt. Der Wert muss größer gleich 0 sein. Ist das Argument eine Liste, dann wird deren erstes Element entnommen. Ist dies wieder eine Liste, dann wird der Vorgang wiederholt. |
||||||||||||||||
SamplingMode |
Gibt an, wie die berechnete Spline-Kurve abgetastet werden soll und welche Randbedingungen verwendet werden. Das Argument SamplingMode kann folgende Werte haben:
...plus einer Konstante, die die Randbedingungen bestimmt.
Ist das Argument eine Liste, dann wird deren erstes Element entnommen. Ist dies wieder eine Liste, dann wird der Vorgang wiederholt. |
||||||||||||||||
VX1 |
Bestimmt die Randbedingung am linken Rand. Erlaubte Datenstrukturen sind Einzelwert. Es sind alle reellen Datentypen erlaubt. Ist das Argument eine Liste, dann wird deren erstes Element entnommen. Ist dies wieder eine Liste, dann wird der Vorgang wiederholt. Wenn das Argument nicht angegeben wird, wird es auf den Vorgabewert 0 gesetzt. |
||||||||||||||||
VXn |
Bestimmt die Randbedingung am rechten Rand. Erlaubte Datenstrukturen sind Einzelwert. Es sind alle reellen Datentypen erlaubt. Ist das Argument eine Liste, dann wird deren erstes Element entnommen. Ist dies wieder eine Liste, dann wird der Vorgang wiederholt. Wenn das Argument nicht angegeben wird, wird es auf den Vorgabewert 0 gesetzt. |
||||||||||||||||
VZ1 |
Bestimmt die Randbedingung am hinteren Rand. Erlaubte Datenstrukturen sind Einzelwert. Es sind alle reellen Datentypen erlaubt. Ist das Argument eine Liste, dann wird deren erstes Element entnommen. Ist dies wieder eine Liste, dann wird der Vorgang wiederholt. Wenn das Argument nicht angegeben wird, wird es auf den Vorgabewert 0 gesetzt. |
||||||||||||||||
VZn |
Bestimmt die Randbedingung am vorderen Rand. Erlaubte Datenstrukturen sind Einzelwert. Es sind alle reellen Datentypen erlaubt. Ist das Argument eine Liste, dann wird deren erstes Element entnommen. Ist dies wieder eine Liste, dann wird der Vorgang wiederholt. Wenn das Argument nicht angegeben wird, wird es auf den Vorgabewert 0 gesetzt. |
Anmerkungen
Das Ergebnis ist immer vom Datentyp 64-Bit Fließkomma.
Zunächst wird für jede Zeile des durch die Y-Komponente des Datensatzes aufgespannten Gitters eine Spline-Kurve modelliert und an den gewünschten Z-Positionen ausgewertet. Eine solche Spline-Kurve besteht aus kubischen Polynomen, die so aneinander gehängt werden, dass ein möglichst glatter Verlauf entsteht. Anschließend wird für jede Spalte der so berechneten Datenmatrix eine Spline-Kurve modelliert und an den gewünschten X-Positionen ausgewertet. Vor jeder Spline-Interpolation werden ungültige Werte in den Zeilen bzw. Spalten durch lineare Interpolation eliminiert. Die Y-Komponente des zu interpolierenden Datensatzes muss mindestens 3 x 3 Werte enthalten und die X- und Z-Komponenten müssen streng monoton wachsend sein.
Eine natürliche Spline-Kurve erhalten Sie mit V1 und Vn als 2. Ableitungen gleich Null.
Verfügbarkeit
FlexPro Basic, Professional, Developer Suite
Beispiele
Dim data = {{0, 0, 0, 0}, {0, 1, 0, 0}, {0, 0, -1, 0}, {0, 0, 0, 0}}
Spline2D(data, 100, 100, SPLINE_EQUIDISTANT + SPLINE_NOTAKNOT)
Interpoliert die Matrix durch ein Gitter von Spline-Kurven ohne Randbedingungen.
Die folgenden Grafiken zeigen eine 2D-Spline-Kurve und die zugrunde liegenden Daten:
Spline2D(data, 100, 100, SPLINE_EQUIDISTANT + SPLINE_1DERIVATIVE, -10, 10, -10, 10)
Interpoliert die Matrix mit Randbedingungen. VX1, VZ1, VXn und VZn werden als Steigung (1. Ableitung) im ersten und letzten Punkt in X- bzw. Z-Richtung interpretiert.
Siehe auch
Analyseobjekt Spline-Interpolation
Analyseobjekt Oberflächeninterpolation
Analyseobjekt 2D-Approximation
Literatur
[1] "Carl de Boor": "A Practical Guide to Splines, Revised Edition". "Springer-Verlag, New York",2001.ISBN 0-387-95366-3.