EMG during Walking : On/Off detection

18 views (last 30 days)
Marie-Caroline
Marie-Caroline on 9 Feb 2024
Answered: Alex Wu on 25 Mar 2024
I would like to define an accurate threshold to detect ON/OFF bursts.
Please find attached my EMG signal (rectified).
I am able to code when the muscle activity exceeds the double or triple SD rang (i.e. the muscle is defined to be
“On” or activated).
Threshold=std(A(1:800,1)).*(2.5)
if A>Threshold
DataON=A>Threshold
DataONOFF=diff(DataON)
BUT : Because single spontaneous spikes can easily exceed the SD range, I need to define
a minimum time (minimum subperiod duration) that the EMG signal has to constantly stay OVER the threshold
to be accepted as “On” (e.g. 50 ms). So I would like to translate something like that :
if A>Threshold (and data over threshold during 50 ms)
  2 Comments
Star Strider
Star Strider on 9 Feb 2024
The 'Threshold' value is really low — about 17.5 — with the peaks in the range of 100 to 2000. Also, the sampling frequency is missing, so it’s not possible to determine the activation duration. I would use a differerent approach to this, however I first need to understand what exactly you want to do.
It would also help to know what release you’re using, and if you have the Signal Processing Toolbox.
Marie-Caroline
Marie-Caroline on 9 Feb 2024
The sampling frequency is 2000 Hz.
My objective is to define subperiods (each walking step) within my entire trial.
I use Matlab R2023b and have the Signal processing Toolbox.
Many thanks in advance for your help !

Sign in to comment.

Answers (1)

Alex Wu
Alex Wu on 25 Mar 2024
Hi Marie-Caroline
You may find sigrangebinmask useful.
Please check this example Label High-Amplitude Regions in EMG Signal, where we use sigrangebinmask function to label regions where the EMG amplitude is greater than 0.25 (threshold) for at least 0.5 seconds (minimum subperiod duration).

Community Treasure Hunt

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

Start Hunting!