I have two column one is time column and another is speed column. The speed is constant but when a subject starts running the speed increase. I want to know the exact time point when a subject start run using a MATLAB code. I collected five trials in one file. I want to know the five time steps from one file. Attached is the excel sheet.

 Réponse acceptée

KSSV
KSSV le 4 Mar 2016

2 votes

clc; clear all ;
data = xlsread('Book1.xlsx') ; % Read the data
t = data(:,1) ; x = data(:,2) ; % Seperate columns
start_t = []; % Initialize needed time
start_idx = [] ; % Initialize needed indices
for i = 1:length(t)-1
dx = x(i+1)-x(i) ;
if dx ~=0 && dx == x(i+1)
start_idx = [start_idx ; i ] ;
start_t = [start_t ; t(i)] ;
end
end
plot(t,x) ;
hold on
plot(t(start_idx),x(start_idx),'.r') ;

Plus de réponses (1)

Jos (10584)
Jos (10584) le 4 Mar 2016

1 vote

Let S be your vector of speeds, and T your time points
% Determine, for each time point, is the subject running or not
IsRunning = S > 0 ;
% For each time point, did the subject change from not-running to running
TF = [false ; diff(IsRunning(:))==1] ;
% At what indices did this happen
index = find(TF)
% and the time points are:
T_startedToRun = T(index)
% check with a plot
plot(T,S,'b-', T_startedToRun,0,'rs') ;

Catégories

En savoir plus sur Parallel Computing Toolbox dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by