# Array indices must be positive integers or logical values.

7 views (last 30 days)
Michael Ryan on 25 Oct 2021
Commented: Michael Ryan on 25 Oct 2021
Can't seem to figure out the reason for the error. The array indices, i, as far as I can tell are intergers between 1 and 1000.
Attached is the code:
clear
clc
close all
t = linspace(0,2,1000);
f = zeros(1,length(t));
for i = 1:length(t)
if t(1i) <= 1
f(1i) = 2-(2.*((t(1i)-1).^2));
elseif t(1i) > 1
f(1i) = 0;
end
end
plot(t,f)
Returns the error:
Array indices must be positive integers or logical values.
Error in aufgabe1 (line 10)
f(1i) = 2-(2.*((t(1i)-1).^2));

Scott MacKenzie on 25 Oct 2021
Edited: Scott MacKenzie on 25 Oct 2021
You've got a typo in your code. Change the indices
1i
to
i
##### 1 CommentShowHide None
Michael Ryan on 25 Oct 2021
Thanks. This worked. For some reason previously MATLAB was telling me to replace i or j with 1i or 1j.

### More Answers (1)

Walter Roberson on 25 Oct 2021
t = linspace(0,2,1000);
t is a (real) vector of length 1000
if t(1i) <= 1
That asks to index the vector t at location 1i . However, 1i means sqrt(-1) which is not real-valued and is not a positive integer.
##### 1 CommentShowHide None
Walter Roberson on 25 Oct 2021
t = linspace(0,2,1000);
nt = length(t);
f = zeros(1,nt);
for K = 1:nt
if t(K) <= 1
f(K) = 2-(2.*((t(K)-1).^2));
elseif t(K) > 1
f(K) = 0;
end
end
plot(t,f)
ylim([-1 3]) R2021b

### Community Treasure Hunt

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

Start Hunting!