??? Index exceeds matrix dimensions.
7 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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.
0 Kommentare
Antworten (1)
Thorsten
am 13 Feb. 2013
Bearbeitet: Thorsten
am 13 Feb. 2013
Probably you have defined a variable distance that shadows the function distance. You can check that by using
which distance
distance_new = distance(d1.x, d1.y);
You did not ask for it, but I realized that you can simplify your function equalize_dimension considerably
function n = equalize_dimension(x, y)
Z = zeros(max([size(x); size(y)]));
n.x = Z; n.x(1:size(x, 1), 1:size(x, 2)) = x;
n.y = Z; n.y(1:size(y, 1), 1:size(y, 2)) = y;
Further I noted that you run your pdist2 function inside the loop always on x and y that do not change depending on i and j.
And please provide the pdist2 function.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!