# Hi i am getting Index out of bounds error pls help me solve it

1 view (last 30 days)
Serena Woolridge on 31 Mar 2016
Commented: Star Strider on 4 Apr 2016
I hv a 2d image of 93×58 pixels. Error im gettin is attempted to access b(1,59) because size(b)=(93,58).
How do i go about rectifying this error?? Pls help as im new to matlab and to image processing. Thanks in advance.
##### 2 CommentsShowHide 1 older comment
Serena Woolridge on 4 Apr 2016
To make it more clear, i am attempting to split pixels into subpixels of my image of size(93x58) and assign 1s and 0s to the subpixels in order to classify my image into its various classes. The error keeps appearing in the loc:
x=(b(ii,jj)/100)*(ms*ms);
The code i use is:
imshow(a);
[m1,n1,o1]=size(a);
ms=input('enter map size');
m2=m1*ms;
n2=n1*ms;
for ii=1:m2
for jj=1:n2
x=(b(ii,jj)/100)*(ms*ms);
x=round(x);
if(x==(ms*ms))
for n=1:(ms*ms)
mat(n)=1;
end
else
r=randi(1,ms*ms,ms*ms);
d=magic(ms);
for n=1:x
mat(d(n))=1;
end
for n=x+1:(ms*ms)
mat(d(n))=0;
end
end
end

Star Strider on 31 Mar 2016
Edited: Star Strider on 1 Apr 2016
You’re asking for column 59 of a 58-column matrix.
EDIT Seeing only the part of your code that you posted (about 8 hours ago), I would simply reverse the values of ‘m2’ and ‘n2’ in your loops.
##### 2 CommentsShowHide 1 older comment
Star Strider on 4 Apr 2016
In these lines:
m2 = m1*ms;
n2 = n1*ms;
the ‘ms’ variable has to be greater than 0 and less than or equal to 1 for that to work correctly.
The only way I can come up with to avoid addressing outside the dimensions of your image is with something like this:
m2 = fix(max(1,m2));
m2 = fix(min(m1,m2));
n2 = fix(max(1,n2));
n2 = fix(min(n1,n2));
That limits the index variables to the limits of your image size.

MHN on 31 Mar 2016
So, you should not attempt to get b(1,59) when the size of b is (93,58) !!!

Walter Roberson on 1 Apr 2016
Consider the possibility that you have m2 and n2 exchanged in your code.
Another possibility: did you use
[m2, n2] = size(YourMatrix)
and your image is a color image? If so then you have a bug because of the way that size() is defined when you have fewer outputs than the array has dimensions. Instead use
[m2, n2, ~] = size(YourMatrix)
##### 2 CommentsShowHide 1 older comment
Walter Roberson on 4 Apr 2016
We need to see your code.