Zugriff auf Interpolationsfunktionen
In diesem Thema
Zugriff auf Interpolationsfunktionen
Bei Kennlinien besteht die Möglichkeit, aus EbsScript auf die Interpolationsfunktionen des Bauteils zuzugreifen, d.h. den Wert der Kennlinie an einem Punkt zu ermitteln. Außerdem können der Typ und die Attribute für die Interpolation abgefragt werden.
Beim EbsScript-Typ „ebscharline“ für Kennlinien können folgende Eigenschaften verwendet werden:
- getSize : Integer; lesen und schreiben; Anzahl der Punkte der Kennlinie
- size : wie getSize
- param : Real; lesen und schreiben; Scharen-Parameter der Kennlinie
- x : array von Real; lesen und schreiben mittels [{index}]; x-Werte der Kennlinie (1-basiert)
- y : array von Real; lesen und schreiben mittels [{index}]; y-Werte der Kennlinie (1-basiert)
- interpolate : Methode, Rückgabetyp Real, Aufruf durch interpolate({x:real}); interpoliert an Stelle x
- interpolationtype : interpolationtypeenum; lesen und schreiben; Art der Interpolation (vgl. Kennlinien-Dialog)
- interpolationorder : Integer; lesen und schreiben; Interpolation-Ordnung (vgl. Kennlinien-Dialog)
- extrapolationorder : Integer; lesen und schreiben; Extrapolation-Ordnung (vgl. Kennlinien-Dialog)
- splineborderstype : splineborderstypeenum; lesen und schreiben; Art der Spline-Interpolation (vgl. Kennlinien-Dialog)
- splineborderleft : Real; lesen und schreiben; Linker Splinewert (vgl. Kennlinien-Dialog)
- splineborderright : Real; lesen und schreiben; Rechter Splinewert (vgl. Kennlinien-Dialog)
- id : String; nur lesen; Bezeichner der Kennlinie
- description : String; nur lesen; Beschreibung der Kennlinie
Beispiel:
begin
println ("Motor.CQ3NCV.interpolate(5000):",Motor.CQ3NCV.interpolate(5000));
println ("Motor.CQ3NCV.interpolationtype:",Motor.CQ3NCV.interpolationtype);
println ("Motor.CQ3NCV.interpolationorder:",Motor.CQ3NCV.interpolationorder);
println ("Motor.CQ3NCV.extrapolationorder:",Motor.CQ3NCV.extrapolationorder);
println ("Motor.CQ3NCV.splineborderstype:",Motor.CQ3NCV.splineborderstype);
println ("Motor.CQ3NCV.splineborderleft:",Motor.CQ3NCV.splineborderleft);
println ("Motor.CQ3NCV.splineborderright:",Motor.CQ3NCV.splineborderright);
end;
Die Funktion interpolate liefert den y-Wert der Kennlinie zum als Argument angegeben x-Wert. Der interpolationtype ist
Bei interpolationtype=1 enthalten interpolationorder und extrapolationorder die entsprechenden Ordnungen für Interpolation und Extrapolation.
Bei interpolationtype=2 gibt splineborderstype an, wie die Randbedingungen für die Spline-Interpolation gesetzt werden sollen:
Für splineborderstype=1 oder 2 enthalten splineborderleft und splineborderright die entsprechenden Grenzwerte.
Es ist auch möglich, diese Attribute im EbsScript zu verändern.
Die Funktion interpolate kann auch bei Kennfeldern (Matrizen) benutzt werden.
Bei EbsScript-Typ „ebsmatrix“ für Matrizen können folgende Eigenschaften bzw. verwendet werden:
- sizeX : Integer; lesen und schreiben; Anzahl der Elemente in x-Richtung / Anzahl der Zeilen im Matrix-Dialog
- sizeY : Integer; lesen und schreiben; Anzahl der Elemente in y-Richtung / Anzahl der Spalten im Matrix-Dialog
- data : Methode, Aufruf durch data({index_x,index_y:integer}); Daten in Zelle (index_x,index_y) (1-basiert)
Der Rückgabetyp hängt davon ab, welcher Datentyp definiert worden ist: Realzahl, Ganze Zahl, Text, VARIANT
- interpolate : Methode, Rückgabetyp Real, Aufruf durch interpolate({x,y:real}); interpoliert an Stelle (x,y)
- interpolation2dtype : interpolation2dtypeenum; lesen und schreiben; Art der Interpolation (vgl. Matrix-Dialog)
- id : String; nur lesen; Bezeichner der Matrix
- description : String; nur lesen; Beschreibung der Matrix
- extrapolation2dtype : etrapolation2dtypeenum; lesen und schreiben; Art der Extrapolation (vgl. Matrix-Dialog)
- extrapolation2dspecifiedvalue : Real; lesen und schreiben; Wert für Extrapolation (vgl. Matrix-Dialog)
- hasheaderX : Boolean; nur lesen; Header für x-Werte (in Spalte 1)
- hasheaderY : Boolean; nur lesen; Header für y-Werte (in Zeile 1)
- headersizeX : Integer; lesen und schreiben; Anzahl der Elemente in x-Richtung (evtl. y-Header-Zeile wird NICHT mitgezählt)
- headersizeY : Integer; lesen und schreiben; Anzahl der Elemente in y-Richtung (evtl. x-Header-Spalte wird NICHT mitgezählt)
- headerX : Methode, Aufruf durch data({index}); Header-x-Werte (1-basiert) (nur gültig, wenn hasheaderX == True)
Der Rückgabetyp hängt davon ab, welcher Datentyp definiert worden ist: Realzahl, Ganze Zahl, Text, VARIANT
- headerY : Methode, Aufruf durch data({index}); Header-y-Werte (1-basiert) (nur gültig, wenn hasheaderY == True)
Der Rückgabetyp hängt davon ab, welcher Datentyp definiert worden ist: Realzahl, Ganze Zahl, Text, VARIANT
- headerData : Methode, Aufruf durch data({index_x,index_y:integer}); Daten in Zelle (index_x,index_y) (1-basiert) (evtl. x-Header-Spalte
und y-Header-Zeile werden NICHT mitgezählt)
Der Rückgabetyp hängt davon ab, welcher Datentyp definiert worden ist: Realzahl, Ganze Zahl, Text, VARIANT
Beispiel:
begin
println ("Motor.MXT2.interpolate(10,6000):",Motor.MXT2.interpolate(10,6000));
println ("Motor.MXT2.sizex:",Motor.MXT2.sizex);
println ("Motor.MXT2.sizey:",Motor.MXT2.sizey);
println ("Motor.MXT2.data(1,3)",Motor.MXT2.data(1,3));
println ("Motor.MXT2.interpolation2dtype:",Motor.MXT2.interpolation2dtype);
end;
In diesem Fall benötigt interpolate zwei Argumente (x- und y-Wert) und liefert den Wert des Kennfelds an der entsprechenden Stelle. Mit dem ersten Argument (x) erfolgt eine Interpolation der Zeilen, mit dem zweiten (y) eine Interpolation der Spalten.
Die Funktion sizex liefert die Zahl der Zeilen (einschließlich Kopfzeile mit den y-Werten).
Die Funktion sizey liefert die Zahl der Spalten (einschließlich linken Spalte mit den x-Werten).
Die Funktion data (i,j) liefert den Wert in Zeile i und Spalte j.
Die Funktion interpolation2dtype liefert den Interpolationstyp:
-
0 bei bilinearer Interpolation
-
1 bei bikubischer Interpolation
-
2 bei "Nächster Nachbar"-Interpolation