Effacer les filtres
Effacer les filtres

How to create an envelop from three graphs

13 vues (au cours des 30 derniers jours)
Lisa Justin
Lisa Justin le 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
  1 commentaire
Jan
Jan le 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?

Connectez-vous pour commenter.

Réponse acceptée

Jan
Jan le 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 commentaires
Lisa Justin
Lisa Justin le 5 Sep 2012
I will try to post a plot so it is easy to understand what i mean
Dr. Seis
Dr. Seis le 5 Sep 2012
Modifié(e) : Dr. Seis le 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)

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by