Array indices must be positive integers or logical values.

조회 수: 1 (최근 30일)
Michael Ryan
Michael Ryan 2021년 10월 25일
댓글: Michael Ryan 2021년 10월 25일
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
Michael Ryan
Michael Ryan 2021년 10월 25일
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
Walter Roberson
Walter Roberson 2021년 10월 25일
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])

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

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

제품


릴리스

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by