Search All of the Math Forum:
Views expressed in these public forums are not endorsed by
Drexel University or The Math Forum.



??? Index exceeds matrix dimensions.
Posted:
Feb 13, 2013 5:16 AM


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= r2r1; 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 = r1r2; 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= c2c1; 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 = c1c2; 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.



