Asked by Lisa Justin
on 3 Sep 2012

How can i create an envelop for three different Signals. the edges around the three signals that are top most, so there is an envelop around all three but forming 1 plot around all three. All three signals are plotted on the same graph

*No products are associated with this question.*

Answer by Jan Simon
on 3 Sep 2012

Accepted Answer

For the most trivial case, when the three lines share the same X-values and are provides as vectors:

x = 1:100; y1 = rand(1, 100); y2 = rand(1, 100); y3 = rand(1, 100); joined = cat(1, y1, y2, y3); env_max = max(joined, [], 1); env_min = min(joined, [], 1);

plot(x, joined); hold('on'); plot(x, env_max, 'k'); plot(x, env_min, 'k');

Jan Simon
on 4 Sep 2012

Lisa Justin
on 5 Sep 2012

I will try to post a plot so it is easy to understand what i mean

Dr. Seis
on 5 Sep 2012

I generally use **hilbert** to give me the analytic signal, which I then take the **abs** to give me my envelope of a single signal. If this is what you are after, then maybe this will work (expanding on Jan's answer):

>> hilb = max(abs(hilbert(joined)),[],1); >> plot(f,joined,f,hilb)

Does that look about right?

Or maybe you need to perform the Hilbert transform on the distance your individual data-point is from the origin (0,0,0) i.e.,

sqrt(y1.^2+y2.^2+y3.^2)

So...

>> hilb2 = max(abs(hilbert(sqrt(y1.^2+y2.^2+y3.^2))),[],1) >> plot(f,joined,f,hilb2)

Log in to comment.

Related Content

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
## 1 Comment

## Jan Simon (view profile)

Direct link to this comment:https://www.mathworks.com/matlabcentral/answers/47237-how-to-create-an-envelop-from-three-graphs#comment_97204

It would be helpful, if you post any details. Do you have the "graphs" on paper, as picture file, as FIG file, as data of a text file, as MAT file or available as arrays? Do the grpahs share the same X-values or do you have to interpolate at first?

Log in to comment.