How to plot envelope of a signal

Hi, I have trouble in plotting a smooth envelope of a signal using the envelope function in Matlab or the hilbert method. The time series of my signal is shown below and I want to obtian the red line to link the peak values.
But using envelope() function or hilbert method, I plot something like
Can anyone help me to solve this questions? Thanks!
I attach my data here.

 Accepted Answer

load t.mat
load signal.mat
whos
Name Size Bytes Class Attributes ans 1x35 70 char cmdout 1x33 66 char signal 40001x1 320008 double t 40001x1 320008 double
plot(t, signal);
hold on
[yupper,ylower] = envelope(signal,1000, 'peak');
plot(t, yupper, 'r--', t, ylower, 'g--')

3 Comments

@Chunru Thanks, that really helps!And I have a follow-up question, since this method seems cannot generate correct envelope for more random waveforms, like this one:
Is there anyway to plot the envelope for this irregular signal?
There is not a one-for-all method for envelope detection when noise is added. You can try to adjust the window size for your new signal to see if you can obtain a good result.

Sign in to comment.

More Answers (0)

Products

Release

R2020b

Asked:

on 3 Oct 2022

Commented:

on 4 Oct 2022

Community Treasure Hunt

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

Start Hunting!