MATLAB Answers

0

Attempted to access i(3); index out of bounds because numel(i)=2

Asked by Mahmoud Hassan on 17 May 2019
Latest activity Answered by Walter Roberson
on 18 May 2019
i am getting this error
"Attempted to access i(3); index out of bounds because numel(i)=2 ".
exactly in the line 289 below:
Table=[3*pi/4 2*pi/3 pi/2 pi/3 pi/4
5*pi/6 0 0 0 pi/6
pi 0 0 0 0
-5*pi/6 0 0 0 -pi/6
-3*pi/4 -2*pi/3 -pi/2 -pi/3 -pi/4];
for ind=1:length(CentroidBifX)
Klocal=K(CentroidBifY(ind)-2:CentroidBifY(ind)+2,CentroidBifX(ind)-2:CentroidBifX(ind)+2);
Klocal2=K(CentroidBifY(ind)-1:CentroidBifY(ind)+1,CentroidBifX(ind)-1:CentroidBifX(ind)+1);
Klocal(2:end-1,2:end-1)=0;
Klocal2(2:end-1,2:end-1)=0;
[i,j]=find(Klocal);
[i2,j2]=find(Klocal2);
length(i)
if length(i)> 3
for k=1:3
OrientationBif(ind,k)=Table(i2(k),j2(k));
dxBif(ind,k)=sin(OrientationBif(ind,k))*3;
dyBif(ind,k)=cos(OrientationBif(ind,k))*3;
end
else
for k=1:3
OrientationBif(ind,k)=Table(i(k),j(k)); "line of error"
dxBif(ind,k)=sin(OrientationBif(ind,k))*5;
dyBif(ind,k)=cos(OrientationBif(ind,k))*5;
end
end
end

  3 Comments

It doesn't look like the code you posted HAS 289 lines. Anyway, the error is pretty self-explanatory. Why are you trying to access the third element when there are only 2 elements in (the badly named) "i"?
you would understand the whole 289 lines if i put them all ?! and for your question i am just new to matlab and trying to understand some errors i have
Sulaymon Eshkabilov's comment mistakenly posted as answer:
Hi,
Undefined function or variable 'CentroidBifX'? What is your set variable 'CentroidBifX'?

Sign in to comment.

Tags

Products


Release

R2014b

1 Answer

Answer by Walter Roberson
on 18 May 2019

if length(i)> 3
so if is more than 3 long you execute this code
for k=1:3
OrientationBif(ind,k)=Table(i2(k),j2(k));
dxBif(ind,k)=sin(OrientationBif(ind,k))*3;
dyBif(ind,k)=cos(OrientationBif(ind,k))*3;
end
else
and if you got here, then i is empty, or i is length 1, or i is length 2, or i is length 3.
for k=1:3
OrientationBif(ind,k)=Table(i(k),j(k)); "line of error"
that is going to fail if i is empty, or length 1, or length 2. It is only going to work if i is length 3.
Based upon your error message, i is length 2. We, as outside observers, have no reason to expect that it will be any particular length.

  0 Comments

Sign in to comment.