How to detect stride cycle of EMG with GRF data?

14 views (last 30 days)
Hello, I need help!!! I got 5 muscle EMG data and vertical force of left and right leg during 10 seconds of walking. The GRF was measured in 500 hz of frequency and the EMG data in 2000 hz. I need to detect in the double contact of GRF data the EMG activity of the 5 muscles. How can be done?
Thanks for the help!!!
left_right_GRF=xlsread("AC.xlsx")
5muscles_EMG=xlsread("AC_10_4km_Plot_and_Store_Rep_1.1.xls")
  2 Comments
Mario
Mario on 4 Jan 2023
Hi @star strader, sorry I didn’t explain very well. I need to cut the data in each stride (from left heel strike to the same heel strike) and established between 0% and 100% of a stride cycle. Then, the idea is to cut the EMG data relative to the stride cycle of the GRF. Thanks so much! Sorry my explanation 🤦🏽

Sign in to comment.

Answers (2)

William Rose
William Rose on 3 Jan 2023
Edited: William Rose on 3 Jan 2023
[Edit: change sampling frequency from 5000 to 500]
You already have the binary vectors for left contact, right contact, single leg, and double leg support in columns 7-10 of the data array obtained by xlsread('AC.xlsx').
As @Star Strider noted, it is not clear what you want to do with the EMGs. You have multiple strides. Perhaps you want to signal average over the strides. Since stride duration varies, you use some arbitrary marker, such as right foot contact, to mark the start of each stride. Then you rescale each stride so that every stride has the same normalized duration (for example, normalized duraiton=100). You find the average of each EMG channel using the rescaled time for each stride. That deserves to be its own separate question and discussion.
data=xlsread('AC.xlsx');
contact=data(:,7:10); %left,right,single,double
N=length(contact);
fsg=500; %sampling frequency for GRF (Hz)
tg=(0:N-1)/fsg; %time vector for GRF data
subplot(211);
plot(tg,contact(:,1),'-r',tg,contact(:,2),'-g','linewidth',2)
legend('L','R'); xlabel('Time (s)'); ylabel('Contact'); grid on
subplot(212);
plot(tg,contact(:,3),'-b',tg,contact(:,4),'-m','linewidth',2)
legend('Single','Double'); xlabel('Time (s)'); ylabel('Contact'); grid on
Good luck with your research.
  2 Comments
Mario
Mario on 4 Jan 2023
Thanks so much for your answer. My main idea is to analyze the EMG and GRF of the stride cycle and specifically the double support. I understand the Hz problem, is there a way to relative all the data to the same Hz? Is probably an EMG problem? Thanks have a nice day!

Sign in to comment.


William Rose
William Rose on 4 Jan 2023
You said in your original post that the EMG data was sampled at 2 kHz. You said in your comment: "I understand the Hz problem, is there a way to relative all the data to the same Hz?"
You have not answered the question of what the actual sampling rate was for the data in the EMG file. Only you can answer that question, and you must, in order to proceed. Was the rate 2 kHz, for all five channels, or was the rate 1926 Hz for 2 channels and 1111 Hz for three other channels? If it was all sampled at 2 kHz, then why do the time columns say otherwise?
You say in your comment: "My main idea is to analyze the EMG and GRF of the stride cycle and specifically the double support." This is not a sufficient answer for writing code. You need to be much more specific, because "analyze the EMG and GRF of the stride cycle and specifically the double support" could mean any number of things. Consult the large body of existing literature, or a textbook on gait analysis, and decide exactly what you want to do. Maybe you will find one or two specific figures that you want to reproduce using your data. If so, then post those figures, and the sources for them. Consult your advisor.

Tags

Community Treasure Hunt

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

Start Hunting!