Detrend (FPScript)
Entfernt einen konstanten, linearen oder adaptiven Trend aus einem Datensatz.
Syntax
Detrend(Signal, [ Mode = DETREND_CONSTANT ] [ , Parameter = 0 ])
Die Syntax der Detrend-Funktion besteht aus folgenden Teilen:
Teil |
Beschreibung |
||||||||
---|---|---|---|---|---|---|---|---|---|
Signal |
Der Datensatz, dessen Trend Sie entfernen möchten. Es sind alle Datenstrukturen erlaubt außer Einzelwert und Liste. 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. |
||||||||
Mode |
Gibt an, ob ein konstanter, linearer oder adaptiver Trend subtrahiert werden soll. Wenn Sie das Argument weglassen, wird ein konstanter Trend subtrahiert. Das Argument Mode kann folgende Werte haben:
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 DETREND_CONSTANT gesetzt. |
||||||||
Parameter |
Steuert den Algorithmus für die Berechnung des adaptiven Trends. Wenn positiv und ohne Einheit angegeben, gibt es die Anzahl N der Nachbarn an, die zur Ermittlung des jeweils nächsten Stützpunktes berücksichtigt werden sollen. Wenn mit der Einheit "%" oder negativ angegeben, gibt es die Hysterese in Prozent der Spannweite des Datensatzes an, mit der nach lokalen Maxima gesucht wird, um N automatisch zu bestimmen. Wenn Sie das Argument weglassen oder 0 übergeben, entspricht dies einer Hysterese von 5 %. Erlaubte Datenstrukturen sind Einzelwert. 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. Wenn das Argument nicht angegeben wird, wird es auf den Vorgabewert 0 gesetzt. |
Anmerkungen
Das Ergebnis hat die gleiche Struktur und Einheit wie das Argument Signal.
Bei zusammengesetzten Datenstrukturen wird nur die Y-Komponente verrechnet und die X- und ggf. Z-Komponente wird unverändert in das Ergebnis kopiert. Bei Datenmatrizen und Signalreihen wird die Berechnung für jede Spalte bzw. jedes Signal darin durchgeführt. Die Datentypen Kalenderzeit und Zeitspanne bleiben im Ergebnis erhalten. Für alle anderen numerischen Datentypen ist das Ergebnis vom Typ 64-Bit Fließkommazahl.
Bei der Ermittlung des konstanten bzw. linearen Trends wird zunächst der Mittelwert des Signals berechnet und dann der erste und letzte Pegeldurchgang durch diesen Wert gesucht. Wenn zwei Pegeldurchgänge gefunden wurden, dann wird der Mittelwert bzw. die Bestgerade nur für den Bereich zwischen diesen beiden Pegeldurchgängen berechnet. Dies verhindert Fehler, die durch den Phasenanschnitt periodischer Signale an den Enden des Datensatzes auftreten. Wenn keine Pegeldurchgänge gefunden wurden, dann werden alle Werte in die Berechnung einbezogen.
Für die Berechnung des adaptiven Trends werden die obere und untere Hüllkurve des Signals mit dem gleichen Algorithmus berechnet, den auch die Funktionen UpperEnvelope und LowerEnvelope verwenden. Diese Hüllkurven werden dann mittels linearer Interpolation für alle X-Werte des Datensatzes abgetastet. Von diesen beiden Hüllkurven wird anschließend das arithmetische Mittel gebildet. Der so errechnete Trend wird von den ursprünglichen Daten subtrahiert.
Verfügbarkeit
FlexPro Basic, Professional, Developer Suite
Beispiele
Detrend(Signal) |
Entspricht Signal - Trend(Signal). |
Integral(Detrend(Signal, DETREND_LINEAR)) |
Entfernt vor der Integration einen linearen Trend aus einem Signal. |
Detrend(Signal, DETREND_ADAPTIVE, 2 %) |
Entfernt einen adaptiven Trend aus dem Signal. Die Anzahl der Nachbarn für die Stützpunktsuche der Hüllkurven wird über die Lokalen Maxima im Signal ermittelt, welche mit einer Hysterese von 2 % gesucht werden. |
DCRemovalFilter(DataSet) |
Entfernt den Gleichanteil eines Datensatzes (inklusive benachbarter Frequenzanteile) mit Hilfe der DCRemovalFilter-Funktion (Hochpassfilter). |