フィルターのクリア

Can this for-loop be vectorized?

2 ビュー (過去 30 日間)
Niek Blikslager
Niek Blikslager 2020 年 11 月 15 日
コメント済み: Niek Blikslager 2020 年 11 月 15 日
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!

採用された回答

Bruno Luong
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')
  1 件のコメント
Niek Blikslager
Niek Blikslager 2020 年 11 月 15 日
Thank you! This is very usefull

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeDescriptive Statistics についてさらに検索

製品


リリース

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by