Error ''Array indices must be positive integers or logical values.'' when putting interval of 0.01 in a for loop

79 views (last 30 days)
I get an error ''Array indices must be positive integers or logical values.' when i'm trying to execture a for loop with an interval of 0.01, however when the interval is 1, everything is fine. The problem may stem from it not allowing negative numbers in the array.
y = [];
x = [];
for i = 0:0.1:2
x(i+1) = i
y(i+1) = i*i + 3*i - 4
end
x = 0
y = -4
Array indices must be positive integers or logical values.
plot(x,y)
This is the entire code, nothing more

Answers (3)

Dyuman Joshi
Dyuman Joshi on 2 Jan 2024
The problem stems from the use of 0 and non-integer values as indices.
As the error message states - Arrays indices in MATLAB must be positive integers (or logical values).
You can vectorize your code -
i = 0:0.1:2;
x = i;
y = i.*i + 3*i - 4;
plot(x,y)

Vignesh
Vignesh on 2 Jan 2024
Hi Rinalds,
You are encountering this error because you are giving a decimal as index of an array in the for loop. You may try changing the following line according to the number of times you want to iterate the loop.
for i = 0:0.1:2

Alan Stevens
Alan Stevens on 2 Jan 2024
More like this:
k = 0:0.1:2;
n = numel(k);
for i = 1:n
x(i) = k(i);
y(i) = k(i)*k(i) + 3*k(i) - 4;
end
plot(x,y)

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!