MATLAB: Extract data between peaks

findpeaksMATLAB

Hello everyone, I would really appreciate help on solving this problem. I am trying to segment an emg data based on heelstrikes recorded from the accelerometer. I have used the peak to peak to find the location of the heelstrikes. The first peak, third and fifth peak belong to the right foot. The second, fourth,and sixth correspond to the left foot. I would like to extract the data between. Two heelstrikes of the same foot. For example I would like to write a for loop to extract the emg data from peak 1 to peak 3, then peak 3 to peak 5 till the last peak. Here's what I tried to do but it doesn't work. I have showed the extraction portion in the picture attached. Thanks in advance
if true
% clear all
EMG = readmatrix('straightLASER01.xlsx','Sheet',1); %read emg data
ACC = readmatrix('straightLASER01.xlsx','Sheet',2); %read accleration data
[pks,locs] = findpeaks(ACC,'MinPeakDistance',1000); %find peaks
for p = 1:length(locs)
first_strike = floor(locs(p,:));
third_strike = floor(locs((p+2),:));
acc = EMG1(first_strike:third_strike , p);
end
end

Best Answer

This segregates the EMG1 data by every 2 right-foot steps.
rightFootIdx = 1 : 2 : numel(locs);
for i = 1:length(rightFootIdx)-1
acc = EMG1(locs(rightFootIdx(i)):locs(rightFootIdx(i+1)), p);
% ...
end