How to create an envelop from three graphs
3 views (last 30 days)
Show older comments
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
1 Comment
Jan
on 3 Sep 2012
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?
Accepted Answer
Jan
on 3 Sep 2012
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');
6 Comments
Dr. Seis
on 5 Sep 2012
Edited: 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)
More Answers (0)
See Also
Categories
Find more on Multirate Signal Processing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!