Can't exit a for loop correctly
2 ビュー (過去 30 日間)
古いコメントを表示
I'm trying to find the baseline before a peak. So I wrote this for loop, which defines an index that starts from the index of the peak and decreases by 1 every time and therefore looks at the previous number in the vector to see if it's higher or lower than the current number. If the previous number is higher than the current number, then I want to define it as a baseline and break out of the loop.
rolling = 1:index_peak-1;
for num = rolling
idx = index_peak - num;
if ODv(idx-1) > ODv(idx)
baseline = ODv(idx);
break
end
end
However, what happens is that the for loop runs until a certain point, correctly finds the baseline, but then goes back to the start of the for loop and I see this error:
Array indices must be positive integers or logical values.
And in fact the index has suddenly become a completely different number.
Thanks!
0 件のコメント
回答 (1 件)
David Hill
2021 年 4 月 19 日
for num = index_peak-1:-1:1
if ODv(num) > ODv(num+1)
baseline = ODv(num+1);
break;
end
end
Alternatively
baseline=ODv(find(diff(ODv(1:index_peak))<0,1,'last')+1);
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Loops and Conditional Statements についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!