Borrar filtros
Borrar filtros

??? Subscript indices must either be real positive integers or logicals

3 visualizaciones (últimos 30 días)
I have a for loop that gives the values of x(n) -- here n is an index.
d=0.5;
 
x(1)=1;
 
for n=2:10
x(n)= x(n-1)+d;
y(n)= log(abs(x(n)));
fprintf('y(%d)=%d', n, y(n))
end
I want the loop to also give the values of y(n) = log(abs(x(n))).
However, MATLAB doesn't seem to like this definition and I am presented with the error message: ??? Subscript indices must either be real positive integers or logicals.
What should I do to fix it?
Thanks.
  2 comentarios
Jan
Jan el 27 de Dic. de 2011
Please post the relevant part of the code instead of describing it.
Brooke
Brooke el 27 de Dic. de 2011
@Jan: I have posted the code.

Iniciar sesión para comentar.

Respuesta aceptada

bym
bym el 27 de Dic. de 2011
matlab is ones based, not zeros... x(0) is an error
[edit]
works fine for me (added \n in fprintf statement)
d=0.5;
x(1)=1;
for n=2:10
x(n)= x(n-1)+d;
y(n)= log(abs(x(n)));
fprintf('y(%d)=%d\n', n, y(n))
end
y(2)=4.054651e-001
y(3)=6.931472e-001
y(4)=9.162907e-001
y(5)=1.098612e+000
y(6)=1.252763e+000
y(7)=1.386294e+000
y(8)=1.504077e+000
y(9)=1.609438e+000
y(10)=1.704748e+000
  4 comentarios
bym
bym el 27 de Dic. de 2011
do a clear; before running your script
Brooke
Brooke el 27 de Dic. de 2011
@proecsm: Thanks, that worked!! :)

Iniciar sesión para comentar.

Más respuestas (2)

Jan
Jan el 27 de Dic. de 2011
Either n is not an integer greater than 0 or the symbols log or abs have been defined as variables, such that the built-in functions are shadowed. You can test this by using:
dbstop if error
and start the program. Then Matlab stops when the error occurs and you can check the symbols by:
which abs
which log
The command whos can be helpful also.
  6 comentarios
Brooke
Brooke el 27 de Dic. de 2011
@Walter: Thanks, I have posted the code.

Iniciar sesión para comentar.


Sean de Wolski
Sean de Wolski el 27 de Dic. de 2011
x(n)= x(n-1)+d;
when n = 1, the first iteration of the loop, you're trying to reference x(1-1) a.k.a. x(0) which is undefined and the reason you're seeing the above error.
  1 comentario
Brooke
Brooke el 27 de Dic. de 2011
@Sean: Sorry, that was a typo, I have corrected it to 2 but the problem still persists.

Iniciar sesión para comentar.

Categorías

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

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by