Array indices must be positive integers or logical values.

10 visualizaciones (últimos 30 días)
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));

Respuesta aceptada

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

Iniciar sesión para comentar.

Más respuestas (1)

Walter Roberson
Walter Roberson el 25 de Oct. de 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 comentario
Walter Roberson
Walter Roberson el 25 de Oct. de 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])

Iniciar sesión para comentar.

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Productos


Versión

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by