Can this for-loop be vectorized?
1 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Bruno Luong
2020-11-15
编辑:Bruno Luong
2020-11-15
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')
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!