Date: Feb 13, 2013 5:16 AM
Author: Abder-Rahman
Subject: ??? Index exceeds matrix dimensions.

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.