index exceed matrix dimensions
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
seprienna
am 11 Sep. 2014
Kommentiert: seprienna
am 11 Sep. 2014
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 Kommentare
Rick Rosson
am 11 Sep. 2014
Two lines above the line that caused the error:
for kb=1:size(y)
Akzeptierte Antwort
Rick Rosson
am 11 Sep. 2014
Bearbeitet: Rick Rosson
am 11 Sep. 2014
Please try changing the line
for kb=1:size(y)
to the following:
for kb=1:size(z)
Also, please correct the issue with size described in the answer provided by Adam.
3 Kommentare
Rick Rosson
am 11 Sep. 2014
I think you want to loop over the number of columns in each matrix. So please try the following:
for h=1:size(x,2)
for kb=1:size(z,2)
Weitere Antworten (1)
Adam
am 11 Sep. 2014
Bearbeitet: Adam
am 11 Sep. 2014
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 Kommentare
Pierre Benoit
am 11 Sep. 2014
Well from what your code do, it seems that you need to use
size(x,2)
and the same for z.
Siehe auch
Kategorien
Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!