For Loop "Array indices must be positive integers or logical values"

1 Ansicht (letzte 30 Tage)
Good Morning all,
I have the below statement and its not working when i swith signs and i dont understand why. Appreciate the help!
THIS WORKS
for k = 2:nmr
if a(k) > a(k-1) & a(k-1) > a(k-2) & b(k) < b(k-1) & b(k-1) < b(k-2)
result(k) = 1;
elseif result(k)==0
end
end
BUT Once i swith logical signs i get the matlab error
THIS DOESNT WORK
for k = 2:nmr
if a(k) < a(k-1) & a(k-1) < a(k-2) & b(k) > b(k-1) & b(k-1) > b(k-2)
result(k) = 1;
elseif result(k)==0
end
end

Akzeptierte Antwort

David Hill
David Hill am 9 Sep. 2022
matlab starts indexing at 1, you cannot index into an array at 0
for k = 2:nmr
if a(k) < a(k-1) & a(k-1) < a(k-2) & b(k) > b(k-1) & b(k-1) > b(k-2)
b(k-2) is b(0) when k==2 which cannot happen, matlab will error.
  3 Kommentare
David Hill
David Hill am 9 Sep. 2022
You could start your loop at 3.
for k = 3:nmr
or do something about the b(k-2)
for k = 2:nmr
if a(k) < a(k-1) & a(k-1) < a(max(1,k-2)) & b(k) > b(k-1) & b(k-1) > b(max(1,k-2))

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Image Analyst
Image Analyst am 9 Sep. 2022

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange

Produkte


Version

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by