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

82 次查看(过去 30 天)
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

回答(3 个)

Dyuman Joshi
Dyuman Joshi 2024-1-2
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 2024-1-2
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 2024-1-2
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)

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by