Can this for-loop be vectorized?
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Niek Blikslager
il 15 Nov 2020
Commentato: Niek Blikslager
il 15 Nov 2020
I want to find the moments of footfalls on a forceplate. I first find the peaks in the GRF, and all the valleys in between each step:
[~,locs]=findpeaks(f,'minpeakheight',1000,'minpeakdistance',50);
[~,locs2]=findpeaks(-f,'minpeakheight',-10);
Now I find the last valley before each peak, in order to determine when the force peak of a foot step starts.
for i = 2 : length(locs) - 1
steps(i-1) = max( locs2(locs2>locs(i-1) & locs2<locs(i)) );
end
Is it possible to change this loop into (short) vectorized code? I have to run this loop often, which takes time.
Thanks!
0 Commenti
Risposta accettata
Bruno Luong
il 15 Nov 2020
Modificato: Bruno Luong
il 15 Nov 2020
u = setdiff(locs2,locs);
% if locs2 is sorted and does not intersect with locs
% you can replace u by locs2
steps = interp1(u,u,locs(2:end-1),'previous')
Più risposte (0)
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!