Index in position 1 is invalid. Array indices must be positive integers or logical values.

3 views (last 30 days)
I have :
c(i,2) = 272.0000
c(i,1) = 42.0000
and L(272.0000,42.0000) gives 2
but when I do
L( c(i,2), c(i,1) )
(L is a 697x103 double)
I got
Index in position 1 is invalid. Array indices must be positive integers or logical values.

Accepted Answer

Dyuman Joshi
Dyuman Joshi on 10 Feb 2023
Edited: Dyuman Joshi on 10 Feb 2023
The error occurs because your data is not exactly an integer even though it might look like it.
%Data displayed in the default format i.e. short format
y = 1.0000123
y = 1.0000
Type
format long
in your code and see the value of the the elements.
y
y =
1.000012300000000
Use round(), floor() or ceil() according to what you want to do.
L( round(c(i,2)), round(c(i,1)))
  1 Comment
Xavier
Xavier on 10 Feb 2023
Thank you very much for your answer, I tried with floor() and it works. It is quite surprising though because the value in c are from the use of ginput() so I thought it gives integers corresponding to a pixel.

Sign in to comment.

More Answers (1)

Mathieu NOE
Mathieu NOE on 10 Feb 2023
hello
depending of your format, the command window will display more or less decimals
I suspect
c(i,2) = 272.0000...............123
c(i,1) = 42.0000...............789
are not 100% integer so you have to round them to the nearest integer to make your code work
L( round(c(i,2)), round(c(i,1)) ) should now display the correct value

Products


Release

R2022b

Community Treasure Hunt

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

Start Hunting!