# envelope(a,opt)

Constructs an envelope for arbitrary signals.

### Syntax

o_envelope(a,opt)
  a: shape type - description
  opt: scalar int- options: method 1: 0 for maxima, 1 for minima
  method 2: 2 for maxima, 3 for minima
  method 3: 4 for maxima, 5 for minima
  return: type - coordinates of the envelope

### Usage

The envelope of a a signal is a line tracing the extreme points of the signal. Typically this represents a modulation signal on a carrier.

NOTE: use Method 1 for clean signals, Method 2 for noisy signals, Method 3 when 1 and 2 fail

### Location

menu: veeos ==> Signal Processing ==> envelope

library: sigLib

### Example

See veeos examples . Typical signal and envelope are shown here:

o_envelope(A,3) returns minima using Method 2
o_envelope(A,0) returns maxima using Method 1

### Notes

In a typical communication signal, a high frequency (carrier is) modulated by a low frequency (baseband) signal. The baseband signal contains the information to be sent and the carrier is chosen for transmission characteristics. Once modulated the baseband signal itself no longer exists, but rather it is represented by the fluctuations in the carrier. If specific assumptions are made for the modulated signal, then the baseband can be determined by basic signal processing. However for more complex signals- say a chirped carrier or freq hopping carrier- without specific information reconstructing the baseband can be very difficult. This function assumes nothing about the signal (except that it has a modulation) but rather looks directly at the time domain signal and ferrets out local extrema as best as it can.

To methods are available in this function, selected by option value

Method 1 uses derivatives so is fragile when it comes to noise but also gives a very good estimate of correct peaks.

Method 2 eliminate derivatives so is more robust but still makes good estimate of correct peaks.

Method 3 is brute force and is resonably noise-tolerant but makes only minimal effort to estimate peaks.

Another alternative that may give better results for some signals is decayFilter() which has its own issues but will not fail and is what is commonly used in the real world.

### Reference

### Dependencies

### Supported On

VEE 7.0+, all platforms

### See Also

decayFilter

© 2015-2021. All Rights Reserved. Stan Bischof (stan@worldbadminton.com). Last updated 09 August 2021 18:21.