Daten extrahieren
Neben dem Verrechnen von Daten und dem Aufbau von Datenstrukturen ist die Extraktion von Teilen aus Datensätzen eine wichtige Anwendung von FPScript, z. B. von allen lokalen Maxima in einem Signal oder dem Bereich zwischen zwei Nulldurchgängen. Für solche Anwendungen stellt Ihnen FPScript zwei sehr leistungsfähige Indexoperatoren zur Verfügung.
Indexoperator
Der Indexoperator extrahiert einzelne Werte oder Wertebereiche über deren Position in der Datenstruktur. Alle Zeilen in Datenreihen und alle Zeilen und Spalten in Datenmatrizen sind mit Null beginnend durchnummeriert. Negative Indizes zählen vom Ende her, d. h. -1 indiziert die letzte Zeile bzw. Spalte. Die Index-Operation ermöglicht es Ihnen über diese Nummern auf einzelne Werte oder Abschnitte zuzugreifen.
Datenreihe[99n] liest z. B. den hundertsten Wert aus einer Datenreihe.
Datenreihe[-2n] liest den vorletzten Wert aus einer Datenreihe.
Datenreihe[0n, 49n] bildet eine Datenreihe mit den ersten 50 Werten aus Datenreihe.
Datenreihe[49n, -1n] bildet einen Ausschnitt vom 50. bis zum letzten Wert einer Datenreihe.
Datenreihe[{0n, 5n, 7n, 9n}] bildet eine Datenreihe mit den Werten, deren Indizes aufgeführt sind. Hier wurde der Bündeln-Operator verwendet, um die gewünschten Indizes zu einer Datenreihe zusammenzufügen.
Datenreihe[(NumberOfRows(Datenreihe), NumberOfRows(Datenreihe) - 1n, -1n)]
Hier wurde der Datenreihenoperator verwendet, um die Indizes zu erzeugen. Die Anweisung kehrt die Reihenfolge der Werte in der Datenreihe um.
Bei einer Datenmatrix geben Sie zwei Indizes an, der erste wählt eine oder mehrere Spalten und der zweite eine oder mehrere Zeilen:
Datenmatrix[1n][2n] liest z. B. den 3. Wert aus der zweiten Spalte der Datenmatrix als Einzelwert.
Datenmatrix[-1n] liest die letzte Spalte aus einer Datenmatrix als Datenreihe.
Datenmatrix[][2n] liest die 3. Zeile aus einer Datenmatrix als Datenreihe.
Alternativ können Sie einen 2D-Index verwenden. Dies ist eine Datenmatrix mit 2 Zeilen und n Spalten. Jede Spalte enthält den Spalten- und Zeilenindex eines zu entnehmenden Wertes:
Datenmatrix[{ {1, 0}, {0, 1} }] entnimmt zwei Werte aus einer Datenmatrix als Datenreihe. Entspricht { Datenmatrix[1][0], Datenmatrix[0][1] }.
Werteindexoperator
Bei der Arbeit mit Signalen und Signalreihen ist es oft praktischer, bei der Indizierung von Ausschnitten direkt die X- bzw. Z-Werte anzugeben, statt mit den Indizes zu arbeiten. FPScript stellt hierfür den Werteindexoperator zur Verfügung.
Signal[[0 s, 4.5 s]] bildet z. B. ein Teilsignal mit den Punkten der ersten 4.5 Sekunden.
Bitte beachten Sie, dass die Operation auch dann wie erwartet funktioniert, wenn die X-Komponente von Signal z. B. die Einheit ms hat.
Signalreihe[[3.5 kHz]] extrahiert das Signal mit dem Z-Wert 3.5 kHz aus der Signalreihe.
Die Syntax des Werteindexoperators entspricht der des Indexoperators, Sie müssen lediglich alle eckigen Klammern doppelt schreiben. FPScript interpretiert dann die angegebenen Indizes als X- bzw. Z-Werte und sucht diese in der X- bzw. Z-Komponente des Signals bzw. der Signalreihe, um die Positionen zu erhalten.
Listenelementoperator
Mit dem Listenelementoperator entnehmen Sie ein einzelnes oder mehrere Listenelemente aus einer Liste, wobei Sie mit den Indizes der Listenelemente oder mit deren Namen arbeiten können.
Liste.[1n] liefert z. B. das 2. Element einer Liste.
Liste.[-2n] entnimmt das vorletzte Element einer Liste.
Liste.[1, 2] liefert eine Teilliste mit dem 2. und 3. Element.
Liste.Name entnimmt das Element mit Name "Name" aus einer Liste.
Liste.["Strom*"] liefert alle Listenelemente, deren Namen mit "Strom" anfangen.
Hinweis Bitte beachten Sie, dass der Zugriff auf Listenelemente über deren Namen nicht immer eindeutig ist, da in einer Liste durchaus mehrere Elemente den gleichen Namen haben können.