Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Topic: ??? Index exceeds matrix dimensions.
Replies: 1   Last Post: Feb 13, 2013 1:34 PM

 Messages: [ Previous | Next ]
 Curious Posts: 2,359 Registered: 12/6/04
Re: ??? Index exceeds matrix dimensions.
Posted: Feb 13, 2013 1:34 PM

Abder-Rahman Ali <abder.rahman.ali@gmail.com> wrote in message <7deb2095-2367-4ea1-b921-7126187692ab@googlegroups.com>...
> I have the following code (part of a larger program) in `matlab`:
>
> while(k<n)
> C.(sprintf('Cnew')) = C.(sprintf('C%d',k));
> d1 = equalize_dimension(a.F, C.(sprintf('Cnew')));
> distance_new = distance(d1.x, d1.y);
> k = k + 1;
> end
>
> If you want to substitute values since I have included part of the program, this would be as follows:
>
> C.(sprintf('Cnew')):
>
> 78
>
> And, for `a.F` it is as follows:
>
>
> 78 82 84 80
>
> 80 84 86 82
>
> 82 87 88 85
>
> 82 87 89 86
>
>
> For the `equalize_dimension(x,y)` function, it is as follows:
>
> function n = equalize_dimension (x,y)
> [r1 c1] = size(x);
> [r2 c2] = size(y);
>
> if r1<r2
> e= r2-r1;
> for i=1:e
> x(r1+1,1)=0;
> r1 = r1 + 1;
> end
> [r1 c1] = size(x);
> n.x =x;
> n.y = y;
> end
>
> if r1>r2
> e = r1-r2;
> for i=1:e
> y(r2+1,1)=0;
> r2 = r2 + 1;
> end
> [r2 c2] = size(y);
> n.x = x;
> n.y = y;
> end
>
> if c1<c2
> e= c2-c1;
> for i=1:e
> x(1,c1+1)=0;
> c1 = c1 + 1;
> end
> [r1 c1] = size(x);
> n.x = x;
> n.y = y;
> end
>
> if c1>c2
> e = c1-c2;
> for i=1:e
> y(1,c2+1)=0;
> c2 = c2 + 1;
> end
> [r2 c2] = size(y);
> n.x = x;
> n.y = y;
> end
>
> if r1==r2 && c1==c2
> n.x = x;
> n.y = y;
> end
>
> And, for the `distance(x,y)` function, it is as follows:
>
> function m = distance(x,y)
> [r c] = size(x);
> for i=1:r
> for j=1:c
> summation = (sum(sum(pdist2(x,y))));
> end
> end
> m=summation;
> end
>
> When I run the program, I get the following error:
>
> ??? Index exceeds matrix dimensions.
>
> Error in ==> fs at 36
> distance_new = distance(d1.x, d1.y);
>
> Why is that?
>
> Thanks.

Are you sure d1.x and d1.y are the same size?
I think you should check that.

In function distance you have:
[r c] = size(x);
See if
[r2 c2] = size(y);
gives the same result.
If not, thats one thing you need to fix.

Date Subject Author
2/13/13 Abder-Rahman
2/13/13 Curious