Array indices must be positive integers or logical values.

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
Scott MacKenzie 2021년 10월 25일
편집: Scott MacKenzie 2021년 10월 25일
You've got a typo in your code. Change the indices
1i
to
i

댓글 수: 1

Thanks. This worked. For some reason previously MATLAB was telling me to replace i or j with 1i or 1j.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Walter Roberson
Walter Roberson 2021년 10월 25일
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

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])

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

제품

릴리스

R2021b

질문:

2021년 10월 25일

댓글:

2021년 10월 25일

Community Treasure Hunt

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

Start Hunting!

Translated by