Spline2D (FPScript)
Interpole un ensemble de données bidimensionnelles à travers une grille de courbes splines et échantillonne ces courbes à des points définissables.
Syntaxe
Spline2D(Surface, NX, NZ, SamplingMode, [ VX1 = 0 ], [ VXn = 0 ], [ VZ1 = 0 ] [ , VZn = 0 ])
ou
Spline2D(DataMatrix, LocusX, LocusZ, NX, NZ, SamplingMode, [ VX1 = 0 ], [ VXn = 0 ], [ VZ1 = 0 ] [ , VZn = 0 ])
La syntaxe de la fonction Spline2D se compose des éléments suivants :
Section |
Description |
||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Surface |
La matrice de données ou série de signaux avec une composante Z et un intervalle d'échantillonnage constant, qui est interpolée. Si les composantes X et Z sont manquantes, elles seront générées automatiquement. Les structures de données autorisées sont Matrice de données et Série de signaux. Tous les types de données numériques sont autorisés. Pour les types de données complexes, un nombre est formé. Si l'argument est une liste, alors la fonction est exécutée pour chaque élément de la liste et le résultat est également une liste. |
||||||||||||||||
DataMatrix |
Matrice de données avec la composante Y de la série de signaux à interpoler. Si vous spécifiez une série de signaux, alors sa composante Y est utilisée. Les structures de données autorisées sont Matrice de données et Série de signaux. Tous les types de données numériques sont autorisés. Pour les types de données complexes, un nombre est formé. Si l'argument est une liste, alors son premier élément est pris. S'il s'agit à nouveau d'une liste, le processus est répété. |
||||||||||||||||
LocusX |
Séries de données avec la composante X de la série de signaux à interpoler. Si vous spécifiez un signal, alors sa composante Y est utilisée. Les structures de données autorisées sont Séries de données et Signal. Tous les types de données numériques sont autorisés. Si l'argument est une liste, alors son premier élément est pris. S'il s'agit à nouveau d'une liste, le processus est répété. |
||||||||||||||||
LocusZ |
Séries de données avec la composante Z de la série de signaux à interpoler. Si vous spécifiez un signal, alors sa composante Y est utilisée. Les structures de données autorisées sont Séries de données et Signal. Tous les types de données numériques sont autorisés. Si l'argument est une liste, alors son premier élément est pris. S'il s'agit à nouveau d'une liste, le processus est répété. |
||||||||||||||||
NX |
Spécifie le nombre total de points ou par intervalle X du signal. Les structures de données autorisées sont Scalaire. Tous les types de données entiers sont autorisés. La valeur doit être supérieure ou égale à 0. Si l'argument est une liste, alors son premier élément est pris. S'il s'agit à nouveau d'une liste, le processus est répété. |
||||||||||||||||
NZ |
Spécifie le nombre total de points ou par intervalle Z du signal. Les structures de données autorisées sont Scalaire. Tous les types de données entiers sont autorisés. La valeur doit être supérieure ou égale à 0. Si l'argument est une liste, alors son premier élément est pris. S'il s'agit à nouveau d'une liste, le processus est répété. |
||||||||||||||||
SamplingMode |
Spécifie comment la courbe spline calculée doit être échantillonnée et quelles conditions limites sont utilisées. L'argument SamplingMode peut avoir les valeurs suivantes :
...plus une constante, qui détermine les conditions limites.
Si l'argument est une liste, alors son premier élément est pris. S'il s'agit à nouveau d'une liste, le processus est répété. |
||||||||||||||||
VX1 |
Détermine la condition limite au bord gauche. Les structures de données autorisées sont Scalaire. Tous les types de données réels sont autorisés. Si l'argument est une liste, alors son premier élément est pris. S'il s'agit à nouveau d'une liste, le processus est répété. Si l'argument n'est pas spécifié, il est défini à la valeur par défaut 0 . |
||||||||||||||||
VXn |
Détermine la condition limite au bord droit. Les structures de données autorisées sont Scalaire. Tous les types de données réels sont autorisés. Si l'argument est une liste, alors son premier élément est pris. S'il s'agit à nouveau d'une liste, le processus est répété. Si l'argument n'est pas spécifié, il est défini à la valeur par défaut 0 . |
||||||||||||||||
VZ1 |
Détermine la condition limite au bord arrière. Les structures de données autorisées sont Scalaire. Tous les types de données réels sont autorisés. Si l'argument est une liste, alors son premier élément est pris. S'il s'agit à nouveau d'une liste, le processus est répété. Si l'argument n'est pas spécifié, il est défini à la valeur par défaut 0 . |
||||||||||||||||
VZn |
Détermine la condition limite au bord avant. Les structures de données autorisées sont Scalaire. Tous les types de données réels sont autorisés. Si l'argument est une liste, alors son premier élément est pris. S'il s'agit à nouveau d'une liste, le processus est répété. Si l'argument n'est pas spécifié, il est défini à la valeur par défaut 0 . |
Remarques
Le résultat est toujours du type de données Virgule flottante de 64 bits.
Tout d'abord, pour chaque ligne de la grille couverte par la composante Y de l'ensemble de données, une courbe spline est modélisée et évaluée aux positions Z souhaitées. Ce type de courbe spline est constitué de polynômes cubiques, qui sont ajoutés les uns aux autres pour obtenir la variation le plus lisse possible. Ensuite, pour chaque colonne de la matrice de données ainsi calculée, une courbe spline est modélisée et évaluée aux positions X souhaitées. Avant chaque interpolation spline, les valeurs invalides (void) dans les lignes ou les colonnes sont éliminées par interpolation linéaire. La composante Y de l'ensemble de données à interpoler doit contenir au moins 3 x 3 valeurs et les composantes X et Z doivent être strictement croissantes.
Vous obtenez une courbe spline naturelle avec V1 et Vn comme dérivées secondes égales à zéro.
Disponible dans
FlexPro Basic, Professional, Developer Suite
Exemples
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)
Interpole la matrice à travers une grille de courbes splines sans conditions limites.
Les illustrations suivantes montrent une courbe spline 2D et les données sur lesquelles elle repose :
Spline2D(data, 100, 100, SPLINE_EQUIDISTANT + SPLINE_1DERIVATIVE, -10, 10, -10, 10)
Interpolation de la matrice avec les conditions limites. VX1, VZ1, VXn et VZn sont interprétés comme un gradient (1ère dérivée) dans le premier et le dernier point dans la direction X ou Z.
Voir aussi
Objet d'analyse Interpolation Spline
Objet d'analyse Interpolation de surface
Objet d'analyse Approximation 2D
Littérature
[1] "Carl de Boor": "A Practical Guide to Splines, Revised Edition". "Springer-Verlag, New York",2001.ISBN 0-387-95366-3.