How to create an envelop from three graphs
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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 comentario
Jan
el 3 de Sept. de 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?
Respuesta aceptada
Jan
el 3 de Sept. de 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 comentarios
Dr. Seis
el 5 de Sept. de 2012
Editada: Dr. Seis
el 5 de Sept. de 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)
Más respuestas (0)
Ver también
Categorías
Más información sobre Discrete Fourier and Cosine Transforms en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!