Filterfunktionen für XY-Datensätze

Ab UniPlot 4.0 können für XY-Datensätze sogenannte Filterfunktionen definiert werden. Die Filterfunktionen sind eine Eigenschaft des Datensatzes und werden im Datensatz gespeichert. Wenn sich die Originaldaten des Datensatzes ändern, werden die Filterfunktionen neu berechnet, z. B. beim Datenaustausch oder wenn ein Datenpunkt interaktiv geändert wird. Im Diagramm werden die berechneten Daten graphisch dargestellt. Die Filterfunktion können für 1D- oder 2D-Datensätze definiert werden. Ein Datensatz kann eine oder mehrere Filterfunktionen enthalten. Die erste Funktion in der Liste verwendet als Eingangsdaten die Originaldaten des Datensatzes. Alle folgenden Funktionen greifen jeweils auf die Ergebnisdaten der vorherigen Filterfunktion zu. Das Ergebnis der letzten Filterfunktion wird graphisch dargestellt.

Die Ergebnisdaten der Berechnung werden im Datensatz gespeichert. Wenn Sie eine IPW-Datei weitergeben und eine Filterfunktion bei einem Anwender nicht vorhanden ist, wird der Datensatz zwar korrekt angezeigt, ein Austausch der Daten oder die Bearbeitung der Daten ist jedoch nicht möglich.

Die Filterfunktionen sind UniScript-Funktionen, die vom UniPlot-Anwender definiert werden können. Die folgenden Funktion können als Vorlage für eigene Filterfunktionen verwendet werden. Wie neue Filterfunktionen geschrieben werden, wird am Ende dieser Hilfeseite erklärt.

Liste der Filterfunktionen

Den Quellcode der folgenden Funktionen finden Sie in der Datei script\rs_xy_ffunc.ic

Bei den Funktionen spline, fitspline, pspline und akimaspline kann für den Parameter nPoints die Zahl 0 angegeben werden. Die Funktion verwendet dann eine Anzahl an Stützstellen die abhängig von der Anzahl der Originaldatenpunkte n ist:

n

nSplinePoints

0-2

100

3-5

n*100

6-19

n*50

20-99

n*10

100-999

n*5

1000-100000

n*3

>=100000

n

Grundlegende Filter

abs - Betrag

abs()

Berechnet den Betrag der y-Koordinaten.

cumsum - Kumulierte Summe

cumsum()

Kumulierte Summe der y-Koordinaten.

diff - Differenz

diff()

Diff berechnet die Differenz von aufeinanderfolgenden Datenpunkten.

y(i) = y(i+1)-y(i)

differentiate - Ableitung

differentiate()

Berechnet die Ableitung eines Datensatzes.

mean - Mittelwert

mean()

Mittelwert.

min - Minimumwert

min()

Berechnet das Minimum der y-Koordinaten.

max - Maximumwert

max()

Berechnet das Maximum der y-Koordinaten.

mean - Mittelwert

mean()

Berechnet den Mittelwert der y-Koordinaten.

median - Medianwert

median(nPercent)

Berechnet den Median der y-Koordinaten. Dazu werden die Daten in aufsteigender Folge sortiert und für nPercent=50 auf den Wert an der mittleren Stelle gesetzt. Der Index des Medianwerts wird aus der Punktanzahl multipliziert mit dem Prozentwert berechnet.

Integrate

integrate - Integral

integrate()

Berechnet den Integralverlauf mit Hilfe der Trapezmethode.

integrate_cycle - Integral (Zyklen)

integrate_cycle(xCycleLength, xCycleStart, nCycle)

Berechnet für jeden Zyklus den Integralverlauf mit Hilfe der Trapezmethode.

  • xCycleLength: Zykluslänge in X-Koordinaten, z. B. 0.2s oder 720 °KW.

  • xCycleStart: Zyklusbeginn in X-Koordianten, z. B. 0s oder -360 °KW.

  • xCycleStart wird auf den Wert von x[1] gesetzt, falls der Wert von xCycleStart kleiner als x[1] ist.

  • nCycle: Anzahl der Zyklen. 0 für alle Zyklen.

cycle_value - Integral (Zyklus/Wert)

cycle_value(Type, cycle_length, cycle_start, nCycle)

Berechnet für jeden Zyklus einen der folgenden Kennwerte: Mittelwert, Minimum oder Maximum.

  • nType kann einen der folgenden Werte annehmen:

    • 1: Mittelwert

    • 2: Maximum

    • 3: Minimum

  • xCycleLength: Zykluslänge in X-Koordinaten, z. B. 0.2s oder 720 °KW.

  • xCycleStart: Zyklusbeginn in X-Koordinaten, z. B. 0s oder -360 °KW. xCycleStart wird auf den Wert von x[1] gesetzt, falls der Wert von xCycleStart kleiner als x[1] ist.

  • nCycle: Anzahl der Zyklen. 0 für alle Zyklen.

Skalierung

noise - Rauschen zufügen

noise(nNoiseInPercent, nMultPoints)

Fügt dem ausgewählten Datensatz Rauschen hinzu.

scale_x - Skalierung-X

scale_x(a,b)

Skaliert die x-Koordinaten nach der folgenden Gleichung x = a*x + b.

scale - Skalierung-Y

scale(a,b)

Skaliert die y-Koordinaten mit y = a*y + b.

correction_factor - Skalierung-Y (Berichtigungsfaktor)

correction_factor(x,y)

Korrigiert die y-Koordinate mit einem variablen Korrekturfaktor. Der Filter kann zur Korrektur von Sensorsignalen verwendet werden, von denen bekannt ist, dass sie in einigen Betriebspunkten abweichend sind.

../../_images/xyfilter_correction_factor.png

characteristic_curve - Skalierung-Y (Charakteristische Kurve)

characteristic_curve(Page:Data Id)

Dieser Filter wandelt den Messwert eines Sensors anhand einer Kennlinie in seinen physikalischen Wert um. Bsp.: Spannung in bar für einen Drucksensor.

Seite: Seite der Kennlinie Daten-ID: Name des Datensatzes, der die Kennlinie enthält

../../_images/xyfilter_charac_curve.png

Bit

bit - Bit-Extraktion und Konvertierung

Liefert das n-te Bit von y. nBit beginnt bei 1. Das Ergebnis kann skaliert werden.

bit(nBit, rsScaleFactor, rsScaleOffset)
  • nBit: Range 1 to 64

  • Skalierung: y = rsScaleFactor * (0/1-Wert) + rsScaleOffset;

Wenn rsScaleFactor auf 1 und rsScaleOffset auf 0 gesetzt ist, liegt das Ergebnis im Bereich von 0 bis 1.

Saubere Daten

remove_duplicate_points - Doppelte Datenpunkte entfernen

remove_duplicate_points()

Entfernt alle aufeinander folgende Punkte mit gleicher x-Koordinate bis auf den ersten Punkt.

remove_original_data_points - Originaldaten entfernen

remove_original_data_points()

Entfernt die Originaldaten aus dem Datensatz und setzt den Wert auf eine magische Zahl (x=0.123,y=0.456). Die Funktion kann dazu verwendet werden, um die IPW-Dateigröße zu reduzieren. Der Datenaustausch kann ausgeführt werden.

WICHTIG: Nachdem die Originaldaten entfernt wurden, werden die Filterfunktionen nicht mehr aktualisiert, außer beim Datenaustausch. Beispiel: Die Funktion kann z. B. in Verbindung mit der simplify Funktion verwendet werden:

simplify(5);remove_original_data_points()

Zum Speichern der Datei wählen Sie Datei=>Schließen und kompakt speichern.

Auszug Bereich

extract - Extrahiere Daten (X basiert)

extract(xmin, xmax)

Die Funktion extract schneidet alle Datenpunkte im X-Koordinatenbereich von xmin bis xmax aus. Die Punkte an den Grenzen xmin und xmax werden durch lineare Interpolation berechnet.

Die x-Koordinaten müssen dazu monoton steigend sein.

Siehe auch extract_points

extract_points - Extrahiere Daten (Punkt basiert)

extract_points(imin, imax)

Die Funktion extract_points schneidet einen Ausschnitt der Datenpunkte von imin bis imax aus.

  • imin: Erster Punkt (imin >= 1 und <= Anzahl Punkte - 2).

  • imax: Letzter Punkt. Falls für imax eine negative Zahl angegeben wird, wird von hinten gezählt, z. B. Punktanzahl ist 17:

extract_points(1,22) entspricht extract_points(1,17)
extract_points(1,-1) entspricht extract_points(1,17)
extract_points(1,0) entspricht extract_points(1,17)
extract_points(3,-3) entspricht extract_points(3,15)

peaks - Extrahiere Daten (Spitzen)

peaks(Threshold, bAbsolut, Type)

Der Filter Peaks wird verwendet, um lokale Maxima und Minima in einem verrauschten Signal zu finden. Um ihn zu verwenden, erstellen Sie eine Kopie des Signals (Strg+C Strg+V) und aktivieren Sie Marker und die Option „Marker für gefilterte Daten“.

  • Threshold: Wert zur Erkennung lokaler Extrema

  • bAbsolut: Einer der folgenden Werte:

    • 0: Schwellenwert in Prozent des y-Datenbereichs

    • 1: Schwellenwert in Einheiten der y-Daten

  • Typ: Typ ist einer der folgenden Werte.

    • 1: Suche nach lokalen Maxima (Spitzenwerte)

    • 2: Suche nach lokalen Minima (Tälern)

    • 3: Suche nach lokalen Maxima und Minima

find - Extrahiere Daten (Spezial)

find(min, max, Axis, Type)

Liefert die Datenpunkte im Bereich von min bis max. Falls kein Datenpunkt im Bereich liegt, liefert die Funktion den Wert 0.

Axis ist einer der folgenden Werte:

  • 1: Filter auf die x-Koordinaten anwenden.

  • 2: Filter auf die y-Koordinaten anwenden.

Type ist einer der folgenden Werte:

  • 0: Absolute Werte

  • 1: Relative Werte: Werte werden vor dem Suchen durch den Maximalwert dividiert (xy / xymax).

  • 2: Relative Werte: Werte werden vor dem Suchen auf den Bereich 0 bis 1 skaliert (xy - xymin) / (xymax-xymin).

Für den Type 1 oder 2 sollte min und max im Bereich 0 und 1 liegen.

Beispiel: Mit dem folgenden Filter können alle Punkte gesucht werden, deren y-Koordinaten im Bereich 90% vom Maximumwert liegen: find(0.9, 1.0, 2, 1).

Frequenz

fft_spectrum - FFT: Frequenzspektrum

fft_spectrum(iWindow, Segment_Points)

Berechnet das Spektrum eines Datensatzes mittels FFT.

  • Segment_Points: 0 (alle Punkte), 32, 64, 128, 256, etc.

  • iWindow ist einer der folgenden Werte:

    • 0: Rectangular Window

    • 1: Hanning Window

    • 2: Hamming Window

    • 3: Welch Window

    • 4: Parzen Window.

    • 5: FlatTop Window

    • 6: Blackmann Window

../../_images/xyfilter_fft_spectrum.png

fft_filter - FFT: Filter

fft_filter(rsFreqCutOffBelow, rsFreqCutOffAbove)

Bandpaßfilter. Alle Frequenzen unterhalb der Frequenz rsFreqCutOffBelow und oberhalb der Frequenz rsFreqCutOffAbove werden entfernt. Der Zeitkanal muss in Sekunden definiert sein. Die Frequenzen werden in der Einheit Hz (1/s) definiert.

Interpolation

interpol - Interpolation (Linear)

interpol()
interpol(nPoints)

Berechnet Zwischenpunkte durch lineare Interpolation.

nPoints: Anzahl der Punkte, die gleichmäßig über den x-Koordinatenbereich verteilt werden, oder eine Liste der x-Koordinaten durch Komma getrennt.

interpol2 - Interpolation (Lineare-min/max/delta)

interpol2(xmin, xmax, xdelta)

Berechnet Zwischenpunkte von xmin bis xmax in Schritten von xdelta durch lineare Interpolation.

Der Datensatz muss monoton sein. Falls xmin oder xmax außerhalb des x-Wertebereichs liegt, wird der Bereich entsprechend korrigiert, da die Funktion keine Extrapolation durchführt.

interpol_cosine - Interpolation (Cosinus)

interpol_cosine(nPoints)

Berechnet Zwischenpunkte durch Cosinus Interpolation.

nPoints: Anzahl der Punkte, die gleichmäßig über den x-Koordinatenbereich verteilt werden, oder eine Liste der x-Koordinaten durch Komma getrennt.

Glätten

smooth - Glätten (gleitender Mittelwert)

smooth()
smooth(nNeighbor)
smooth(nNeighbor, PeakFilterFactor)

Glättet einen Datensatz mit dem gleitenden Mittelwert.

Der optionale Parameter nNeighbor gibt die Anzahl der Nachbarpunkte an, die beim Glätten berücksichtigt werden. nNeighbor ist die halbe Fensterbreite. Die gesamte Fensterbreite ist nNeighbor * 2 + 1.

Falls der Parameter nicht angegeben wird, wird nNeighbor gleich 10 gesetzt.

Mit Hilfe des optionalen Parameters PeakFilterFactor kann festgelegt werden, wie die Spitzen in das gefilterte Signal übernommen werden sollen. Default-Wert ist 0.

So funktioniert der Peak-Filter:

  • Die smooth-Funktion wird auf die Originaldaten angewendet.

  • Es wird die Differenz zwischen den Originaldaten und dem gefilterten Daten berechnet (= Abweichung).

  • Es wird das Maximum der Abweichung gesucht und mit dem neuen Faktor multipliziert (= dy).

  • Es werden alle Punkte in den Originalpunkten gesucht, deren Abweichung größer als dy sind.

  • Die gefunden Punkte werden in das geglättete Signal wieder eingefügt.

smooth_median - Glätten (gleitender Median)

smooth_median(nNeighbor)

Gleitender Median. nNeighbor ist die Fensterbreite im Bereich 3 bis 1025. Gerade Zahlen werden auf die nächste ungerade Zahl aufgerundet. Verwendet die Funktion moving_median.

Beispiel: smooth_median(5)

5 aufeinander folgende Punkte aufsteigend sortiert und der dritte Wert wird in den Ergebnisvektor geschrieben. Bei einer Fensterbreite von 5 Punkten werden die ersten zwei Punkte und die letzten zwei Punkte unverändert in den Ergebnisvektor geschrieben.

Gegeben: [5, 7, 6, 4, 27, 8, 4, 5]

Ergebnis: [5, 7, 6, 7, 6,  8, 4, 5]

Beispiel für Ausreißerfilterung:

../../_images/peaks.png

smooth_golay - Glätten (mit Savitzky-Golay Filter)

smooth_golay(nPolynomialOrder, nWindowSize)
smooth_golay(nPolynomialOrder, nWindowSize, PeakFilterFactor)

Die Punkte aus der Umgebung der Filterstelle werden für die Berechnung eines Ausgleichspolynoms verwendet (z. B. 5 Punkte für eine Ausgleichsparabel). Gegenüber dem gleitenden Mittelwert, erhält die Savitzky-Golay-Glättung besser die Form von Peaks. Die Höhe des Peaks wird weniger reduziert und die Breite weniger vergrössert. Allerdings ist auch hier der Einfluss auf die Peakhöhe bzw. die Peakfläche von der ursprünglichen Peakbreite und Peakform abhängig.

../../_images/savitzky-golay.png

Glättung mit Peak-Filter. Die Funktionsweise entspricht dem smooth-Filter.

../../_images/savitzky-golay-peak-filter.png

smooth_time - Glätten (mit Zeitfenster)

smooth_time(rsTimeWindow)

Glättung mit gleitendem Mittelwert. Ein Punkt p des Polygons wird berechnet, indem der Punkt p und n Nachbarpunkte davor und danach arithmetisch gemittelt werden. Mean_i = sum(i-n .. i+n) / (2*n+1)

rsTimeWindow ist die Länge des Zeitfensters, das für die Mittelung verwendet werden soll. Die Funktion berechnet aus der Länge die Anzahl der Datenpuntke n im Zeitfenster.Die Daten müssen mit konstanter Frequenz aufgenommen sein.

Polynom Fit

spline - Spline (Kubisch)

spline()
spline(nPoints)

Berechnet einen kubischen Spline, der alle Datenpunkte schneidet.

nPoints: Anzahl der Punkte des Splines. Die Anzahl muss im Bereich von 10 bis 100000 liegen.

nPoints = 0: Anzahl der Punkte automatisch bestimmen (siehe oben).

fitspline - Spline (fitspline)

fit_spline()
fit_spline(smoothfactor)
fit_spline(smoothfactor, nPoints)

Ausgleichsspline. Die Funktion berechnet einen Spline, der eine Glättung durchführt.

smoothfactor: Glättungsfaktor. Ein Wert von 0 ergibt keine Glättung (d.h. alle Punkte des Splines gehen durch die Originaldatenpunkte) und ein Wert größer als 0 führt eine Glättung durch.

nPoints: Punktanzahl (10 bis 100000).

nPoints = 0: Anzahl der Punkte automatisch bestimmen (siehe oben).

akimaspline - Spline (Akima)

akimaspline()
akimaspline(nPoints)

Kubischer Spline der gut mit diskontinuierlichen Änderungen zurecht kommt, ohne zu stark überzuschwingen. Die Akimainterpolationsmethode verzichtet gegenüber rein kubischen Splines auf die Stetigkeit der zweiten Ableitung.

nPoints: Anzahl der Punkte des Splines. Die Anzahl muss im Bereich von 10 bis 100000 liegen.

nPoints = 0: Anzahl der Punkte automatisch bestimmen (siehe oben).

rspline - Spline (Rational)

rspline(nPoints, TensionFactor)

Rationale Spline-Interpolation, die besser mit Unstetigkeiten in einer Zeitreihe zurechtkommt.

  • nPoints: Anzahl der Splinepunkte im Bereich von 10 bis 100000.

  • TensionFactor: Parameter zur Begradigung der Kurve (0 bis 100).

pspline - Spline (Parameter Spline)

pspline(f, nPoints)

Wenn f nahezu Null ist (z. B. 0,001), ist die resultierende Kurve annähernd ein kubischer Spline. Wenn f groß ist (z. B. 50), ist die resultierende Kurve annähernd eine polygonale Linie.

  • f: Faktor für die Spannung.

  • nPunkte: Anzahl der Punkte (3 bis 100000). nPoints = 0: Automatische Erstellung der Anzahl der Punkte.

oldspline - Spline (alte Version)

oldspline()

Berechnet einen kubischen Spline, der alle Datenpunkte schneidet. Diese Funktion existiert aus Kompatibilitätsgründen zu UniPlot 3.x. Verwenden Sie statt dessen die Funktion spline(0).

polyfit - Polynomfit

polyfit()
polyfit(polynomOrder)
polyfit(polynomOrder, nPoints, nInfoText)
polyfit(polynomOrder, nPoints, nInfoText, xMin, xMax)

Erzeugt ein Ausgleichspolynom 0ter bis 9terOrdnung, wobei order=1 eine Ausgleichsgerade ergibt (Regressionsgerade).

  • polynomOrder: Ordnung des Polynoms (Default = 1).

  • nPoints: Anzahl der Punkte, aus denen die Kurve gebildet werden soll (Default = 1000). Die Punktanzahl muss im Bereich 2 bis 100000 liegen.

  • nInfoText:

    • 0 = kein Text.

    • 1 = Polynomparameter.

    • 2 = Polynomparameter und R2 (Bestimmtheitsmaß)

  • xMin: Startwert. Kann kleiner als der erste Datenpunkt sein. Falls der Wert auf 1e10 gesetzt wird, wird der erste Datenpunkt verwendet.

  • xMax: Endwert. Kann größer als der letzte Datenpunkt sein. Falls der Wert auf 1e10 gesetzt wird, wird der letzte Datenpunkt verwendet.

polyfitzero - Polynomfit (Y-Achsenabschnitt bei 0)

polyfitzero()
polyfitzero(polynomOrder)
polyfitzero(polynomOrder, nPoints, nInfoText)

Die Funktion berechnet ein Ausgleichspolynom (Fit), dass den Ursprung schneidet (y-Achsenabschnitt = 0).Erzeugt ein Ausgleichspolynom 0ter bis 9ter Ordnung, wobei n=1 eine Ausgleichsgerade ergibt (Regressionsgerade).

  • polynomOrder: Ordnung des Polynoms

  • nPoints: Anzahl der Datenpunkte (Default=1000)

  • nInfoText:

    • 0 = Kein Textobjekt anzeigen.

    • 1 = Textobjekt mit Polynom Parameter anzeigen.

    • 2 = Textobjekt mit Polynom Parameter anzeigen und R2 (Bestimmtheitsmaß) anzeigen.

simplify - Simplify

simplify()
simplify(nTolerance)

Datenpunkt-Reduzierung mit dem Douglas-Peucker Verfahren.

nTolerance: gleich 1 bedeutet, dass alle Punkte der transformierten Kurve höchstens einen Abstand von 10% zur Originalkurve haben. Die Werte 2, 3, 4 bis 30 halbieren die Tolerenz. 4 ist also ein Abstand von 1.25%, bei 20 ist der Abstand nahezu 0. Default-Wert ist 5.

../../_images/filter-simplify.png

Erweiterte

boundary - Hüllkurve erzeugen

boundary()
boundary(type)
boundary(type, width)

Berechnet die obere, untere oder obere und untere Hüllkurve, die die Daten einschließt.

  • type

    • 0 - obere Hüllkurve (Defaultwert: 0).

    • 1 - untere Hüllkurve.

    • 2 - obere und untere Hüllkurve.

  • width: Klassenbreite in Prozent (Defaultwert 5%).

center - Zentrum einer Punktwolke bestimmen

center()

Zentrum einer Punktwolke bestimmen. Berechnet den Mittelwert aller x- und y-Koordinaten. Der Mittelpunkt wird durch ein Symbol markiert.

Wichtig: Marker für gefilterte Daten einstellen!

convex_hull - Konvexe Hülle

convex_hull()

Ermittelt die konvexe Hülle eines Datensatzes.

event_duration - Dauer der Veranstaltung

event_duration()

Berechnet die Dauer aller hohen Ereignisse eines booleschen Signals und gibt einen Datensatz aus, wobei:

  • X: Beginn des Ereignisses

  • Y: Dauer des Ereignisses

Das folgende Beispiel zeigt eine typische Verwendung dieses Filters.
  1. Wenden Sie einen find Filter auf eine Kurve an, um bestimmte Ereignisse anzuvisieren

  1. min = 0

  2. max = 0.7

  3. Axis = 2

  4. Type = 3 (1, wenn die Min/Max-Bedingung erfüllt ist, sonst 0)

  1. Anwendung eines Filters event_duration zur Berechnung der Dauer.

  2. Rechts-Klick => Textobjekt => 2D-Tabelle um eine Tabelle aus dem Datensatz zu erhalten.

  3. Fügen Sie der Tabelle eine bedingte Formatierung hinzu, um benötigte Informationen schnell hervorzuheben. Informationen hervorzuheben.

../../_images/xyfilter_event_duration.png

histogram - Histogramm

histogram(Type, ClassMin, ClassMax, ClassWidth)

Berechnet ein Histogramm.

  • Falls ClassMin=0 und ClassMax=0 ist, wird die Klassenbreite ClassWidth als Anzahl der Klassen im y-Bereich verwendet

  • Type kann einer der folgenden Werte sein:

    • 1: Absolut

    • 2: Prozent

    • 3: kumulativ (‚mehr als‘)

    • 4: kumulativ in Prozent (‚mehr als‘)

    • 5: kumulativ (‚weniger als‘)

    • 6: kumulativ in Prozent (‚weniger als‘)

../../_images/xyfilter_histogram.png

Siehe auch histogram

range_counting - Spannenverfahren (DIN 45667)

range_counting(rsThreshold)

Spannenverfahren (Range counting) nach DIN 45667.

DIN 45667: Classification methods for evaluation of random vibriations. Als Spannen werden die Differenzen zwischen zwei benachbarten Extremwerten bezeichnet. Die sortierten Spannen werden ausgegeben.

Um ein Histogramm von den Spannen zu erzeugen wählen Sie die Funktion histogram() aus.

Parameter:

  • rsThreshold: Nur Spannen, die größer als der Grenzwert sind, werden berücksichtigt.

  • nType

    • 1: Alle Amplituden (Positive und negative)

    • 2: Nur positive Spannen

    • 3: Nur negative Spannen

../../_images/xyfilter_range_counting.png

set_to_zero - Über dem Schwellenwert auf 0 gesetzt

set_to_zero(rsThreshold)

Setzt eine Kurve auf 0 , wenn ein Schwellwert überschritten wird.

sort - Sortiere aufsteigend

sort()

Sortiert die Datenpunkte nach der x-Koordinate.

step - Step

step()
step(nType)

Berechnet eine Stufen-Kurve (z. B. Cityscape or Skyline).

nType kann einen der folgenden Werte annehmen:

  • 0 - Kurve beginnt horizontal.

  • 1 - Kurve beginnt vertikal (Defaultwert = 1).

to1d - x/y => t/y (1D)

to1d()

Wandelt einen x/y-Datensatz in einen t/y-Datensatz um. Die x-Koordinaten werden dabei über den gesamten x-Koordinatenbereich gleichmäßig verteilt.

Schreiben eigener Filterfunktionen

Das Schreiben einer Filter-Funktion soll an einem Beispiel gezeigt werden.

def _xy_filter_func_scale(hData, a, b)
{
    if (nargsin() == 1) {
        _a = 1;
        _b = 0;
    } else if (nargsin() == 2) {
        _a = a;
        _b = 0;
    } else if (nargsin() == 3) {
        _a = a;
        _b = b;
    }
    xy = XYGetData(hData);
    x = xy[;1];
    y = xy[;2];
    y = _a * y + _b;
    return XYSetData(hData, x, y, TRUE); // TRUE ist wichtig!
}
def _xy_filter_info_scale()
{
    svInfo = ["Y-Skalierung";
              "scale(a,b)\n\nSkalierung der y-Koordinaten mit Hilfe" + ....
              "der Geradengleichung y = a*y + b";
              "";
              "2";
              "Skalierungswert a:1:-1e9:1e9";
              "Verschiebungswert b:0:-1e9:1e9"];
    return svInfo;
}

Um eine neue Filterfunktion zu definieren, müssen zwei Funktionen geschrieben werden. Eine Funktion berechnet die Daten, die andere Funktion stellt Informationen für die Benutzerschnittstelle bereit. Bei dem oben gezeigten Beispiel sind das die Funktionen _xy_filter_func_scale und _xy_filter_info_scale.

Die Namen von Filterfunktionen fangen mit den Zeichenfolge _xy_filter_func_ an, gefolgt von dem Anwender-Namen der Filterfunktion, in diesem Beispiel scale.

Die Funktionen können in einer Datei mit der Endung .ic im autoload-Verzeichnis von UniPlot gespeichert werden. Beim Start von UniPlot werden die Funktionen dann automatisch geladen.

Die Info-Funktion gibt einen Stringvektor mit mindestens 4 Elementen zurück.

Element

Bedeutung

svInfo[1]

Name der Funktion.

svInfo[2]

Beschreibungstext der im Hilfefenster angezeigt wird. Falls der Text länger ausfällt, kann man wie im Beispiel den Text auf mehrere Zeilen verteilen. Die Zeilen werden dann mit + .... verknüpft.

svInfo[3]

Nicht benutzt. Muss ein leerer String sein („“).

svInfo[4]

Anzahl der Parameter „0“ bis „8“

svInfo[5]

Hinter svInfo[4] folgen 0 bis 8 weitere Info-Strings. Sie enthalten den Namen des Parameters, gefolgt von 3 durch Doppelpunkte getrennte Zahlen. Die erste Zahl ist der Defaultwert, gefolgt von einem Minimum- und einem Maximum-Wert, den der Parameter annehmen kann. Beispiel: "Verschiebungswert b:0:0:1e9".

Die Func-Funktion führt die Berechnung durch. Als erster Parameter wird immer der Handle des Datensatzes übergeben. Über den Handle kann auf die Daten des Datensatzes zugegriffen werden (XYGetData). Die Ergebnisdaten werden mit der Funktion XYSetData zurückgeschrieben. Die weiteren Parameter sind optional.

History

Version

Beschreibung

R2024.4

xy_filter_event_duration Berichtigung

R2024.3

xy_filter_event_duration and xy_filter_characteristic_curve

R2022.2

correction_factor

id-1866448