Double condition to find index

I have force data from force plate and I try to determine the impact time/index.
For that, I need two conditions:
1) Data exceeds 20 newtons (>20)
2) Data exceeds 20 newtons for more than 50 milliseconds
I tried with for + if and with for using find fonction.
Do you have some idea to resolve that ?
Thank you so much.

3 comentarios

Torsten
Torsten el 24 de Jun. de 2022
Editada: Torsten el 24 de Jun. de 2022
Is the time interval in which the force data are reported constant ? If yes: how long is it ?
James Tursa
James Tursa el 24 de Jun. de 2022
What is the sampling rate of your recorded data?
Jeanne Dury
Jeanne Dury el 24 de Jun. de 2022
The sample rate is 2000Hz

Iniciar sesión para comentar.

 Respuesta aceptada

Walter Roberson
Walter Roberson el 24 de Jun. de 2022
freq = 2000; %hz
threshold = 20; %newtons
significant_time = 50; %milliseconds
significant_samples = ceil(significant_time/1000 * freq);
mask = ForceData(:).' > threshold;
streak = repmat(1, 1, significant_samples);
starts = strfind([false mask], [0 streak]);
stops = strfind([mask false], [streak 0]);
At this point, starts and stops will be vectors the same length, in which ForceData(starts(K):stops(K)) is a run of samples that exceed the threshold for at least as long as you require.

1 comentario

Jeanne Dury
Jeanne Dury el 24 de Jun. de 2022
Thank you very much for your answer. It works perfectly!

Iniciar sesión para comentar.

Más respuestas (1)

Jonas
Jonas el 24 de Jun. de 2022
myData=...;
fs=2000;
minLength=ceil(fs*0.05);
highVals=myData>20;
searchFor=conv(highVals,ones(1,minLength),'same');
% areas in which the condition is fullfilled are greater than your minLength
plot(searchFor);
findpeaks(searchFor>=minLength)

Categorías

Productos

Etiquetas

Preguntada:

el 24 de Jun. de 2022

Comentada:

el 24 de Jun. de 2022

Community Treasure Hunt

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

Start Hunting!

Translated by