index exceed matrix dimensions
Mostrar comentarios más antiguos
hello folks, I'm trying to run 2 different dimensional vectors by using weighted regions with a chosen factor. can I get some expert opinion on identify the error,please. your help is gratefully appreciated.Many thanks in advance.
x=train_data; % 882 x2 double
z=test_data; %882 x 8 double
distance_max=[];
for h=1:size(x)
for kb=1:size(z)
kk=x(:,h);
gg=z(:,kb); <-- this is where the error appeared
weightsum=0;
ww = [0, 1,1,1,1,1,0,0,1,1,1,1,1,0,1,1,2,1,2,1,1,2,4,4,0,4,4,2,1,1,1,1,1,1,1,0,1,2,2,2,1,0,0,0,1,1,1,0,0];
length=18;
region = size(x,1)/length;
for e=1:region
e_start = (e -1) * length+1 ;
e_end = e_start + length-1 ;
xpart=kk(e_start:e_end);
zpart = gg (e_start:e_end);
D1 = pdist2(xpart',zpart','chisq')*ww(e);
distance_max=[distance_max,D1];
weightsum=weightsum+D1;
end
results(h,k)={weightsum};
end
end
5 comentarios
Presumably you got a line number with that error that tells you the line which causes the error?
It is a lot more difficult for us to look through a whole block of code hunting for an error when the error message should just point straight to it!
What is y by the way?
There is a
for kb=1:size(y)
line in your code though so when I tried to run it with random matrices of the correct size in place of your x and z that threw an error.
Should that just be size(z) then instead of size(y)?
Rick Rosson
el 11 de Sept. de 2014
Two lines above the line that caused the error:
for kb=1:size(y)
Respuesta aceptada
Más respuestas (1)
size(x)
will return a length d vector where d is the dimension of x. In your case that will be [882 2] and likewise size(y) will return [882 8].
If you want the first dimension you can use
size( x, 1 )
to give 882, or
size( x, 2 )
if you want the second dimension only. You can use
length(x)
if you just want the longest dimension but don't know what the index of that dimension is, but I don't recommend using length for this purpose if you do know which dimension you want.
That may not be the only problem, but it will definitely cause problems.
3 comentarios
Pierre Benoit
el 11 de Sept. de 2014
Well from what your code do, it seems that you need to use
size(x,2)
and the same for z.
seprienna
el 11 de Sept. de 2014
Categorías
Más información sobre Creating and Concatenating Matrices en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!