필터 지우기
필터 지우기

index exceed matrix dimensions

조회 수: 2 (최근 30일)
seprienna
seprienna 2014년 9월 11일
댓글: seprienna 2014년 9월 11일
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
seprienna
seprienna 2014년 9월 11일
편집: seprienna 2014년 9월 11일
million apologies for the confusion adam. I was using the y for a different data but in this experiment, i'm using 'x' and 'z'. Can you kindly point out how can i avoid the dimension error please.
Rick Rosson
Rick Rosson 2014년 9월 11일
Two lines above the line that caused the error:
for kb=1:size(y)

댓글을 달려면 로그인하십시오.

채택된 답변

Rick Rosson
Rick Rosson 2014년 9월 11일
편집: Rick Rosson 2014년 9월 11일
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
Rick Rosson
Rick Rosson 2014년 9월 11일
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)
seprienna
seprienna 2014년 9월 11일
Rick,thanks for the tips. that is the result i'm looking for. thanks again.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Adam
Adam 2014년 9월 11일
편집: Adam 2014년 9월 11일
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
Pierre Benoit
Pierre Benoit 2014년 9월 11일
Well from what your code do, it seems that you need to use
size(x,2)
and the same for z.
seprienna
seprienna 2014년 9월 11일
it works!!!thanks you very much

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by