Can't exit a for loop correctly

2 views (last 30 days)
Samuele Bolotta
Samuele Bolotta on 19 Apr 2021
Answered: David Hill on 19 Apr 2021
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!

Answers (1)

David Hill
David Hill on 19 Apr 2021
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);

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!