Linear envelope of an EMG signal

61 views (last 30 days)
Hello,
I am trying to plot an RMS envelope over a single EMG signal from a respiratory muscle. The data was collected at 2000Hz. Prior to envelope calculation and plot i bandpassed the signal using a 6th order butterworth filter from 30-300Hz. For my envelope calculation, i have the following code:
[up,lo]=envelope(RUT,100,'rms');
I wish to plot the upper envelope on top of the original signal and so my code is:
plot(Time,RUT,Time,up,'lineWidth',0.1)
I am expecting the upper envelope to be higer up to the top of the signal and am not sure why it isn't. In all of the examples i've seen for Matlab, the upper envelope hugs the sigal more close to the top. So i am just curious if i did something wrong and what i can do to correct it.
Thank you in advance! My reference figure screenshot is attached below

Accepted Answer

Mathieu NOE
Mathieu NOE on 30 Nov 2022
hello Ines
there is no bug here , the plot is correct vs what matlab is supposed to do
when you select 'rms' option, you cannot have the envelope on the 'top' of signal , because the rms of a signal is always less than the spikes amplitude.
here the demo code (from the matlab help) :
load('train');
envelope(y,150,'rms');
will give you this result (lo and up envelopes are displayed here)
now if you use 'peak' option, this is maybe what you wanted :
envelope(y,150,'peak');
  14 Comments
Mathieu NOE
Mathieu NOE on 7 Dec 2022
as always, my pleasure !

Sign in to comment.

More Answers (0)

Categories

Find more on Get Started with Signal Processing Toolbox in Help Center and File Exchange

Products


Release

R2022a

Community Treasure Hunt

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

Start Hunting!