Die Funktion „envelope“ berechnet die Hüllkurve eines Signals. Die Hüllkurven-Berechnung erfolgt dabei immer innerhalb eines Datenblocks der Blockgröße des Eingangs-Signals.


Die in einem Datenblock enthaltenen Daten des Eingangs-Signals werden je nach Betriebsart für die obere Hüllkurve auf Maxima bzw. für die untere Hüllkurve auf Minima durchsucht. Die gefundenen Maxima bzw. Minima werden dann mit einem Kurvenzug verbunden, der entweder als Folge von Geraden-Abschnitten oder als Spline berechnet wird.


Das Ergebnis sieht dann z. B. ähnlich wie folgt aus (Eingangs-Signal hier in rot, obere Hüllkurve in blau):



Die Berechnung der Hüllkurve erfolgt mit der Funktion ‚envelope‘, die ein bis drei Parameter haben kann, so dass der Aufruf dann wie in einer der drei nachfolgenden Zeilen aussieht:


       envelope ( data )

       envelope ( data, style )

       envelope ( data, style, dist )


Dabei ist für den Parameter ‚data‘ der Name des Eingangs-Signals einzusetzen.


Der Parameter ‚style‘ kann die Werte 1, 2, -1 oder -2 haben. Je nachdem wird wie folgt berechnet:

       style = 1        berechnet die obere Hüllkurve mit Geraden-Abschnitten

       style = 2        berechnet die obere Hüllkurve mit Spline

       style = -1        berechnet die untere Hüllkurve mit Geraden-Abschnitten

       style = -2        berechnet die untere Hüllkurve mit Spline

Fehlt der Parameter ‚style‘, so wird als Default-Wert style = 1 angenommen.


Der Parameter ‚dist‘ kann Werte von 1 bis 100 annehmen, wird aber intern auf 1/8 der Blockgröße begrenzt. Er beeinflusst die Suche der Maxima bzw. Minima im Eingangs-Signal. Ein Maximum wird nur dann erkannt, wenn rechts und links davon mindestens ‚dist‘ kleinere Werte liegen. Entsprechend wird ein Minimum nur dann erkannt, wenn rechts und links davon mindestens ‚dist‘ größere Werte liegen.

Fehlt der Parameter ‚dist‘, so wird als Default-Wert dist = 5 angenommen.


Je nach Eingangs-Signal liefern unterschiedliche Werte von ‚style‘ und ‚dist‘ die besten Ergebnisse. Bei Bedarf kann die Hüllkurven-Erkennung je nach Signal eventuell auch durch eine vorherige Filterung ( lowpass, highpass ) des Eingangs-Signals verbessert werden.


Die Funktion ‚envelope‘ liefert als Ergebnis ein Signal das genau wie das Eingangs-Signal weiter verarbeitet werden kann.