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

Learn moreOpportunities for recent engineering grads.

Apply Today
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');

Show 3 older comments

Jan Simon on 4 Sep 2012

If a curve is a tangent to three other lines, these lines must be identical in each point, because they have the same slope and the same position. Please choose any more appropriate explanation of the result you are trying to achieve. Please, Lisa, do not let us guess the details, because this wastes your and our time. Thanks.

Elige Grant 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)

## 1 Comment

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/47237#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?