필터 지우기
필터 지우기

Could you please check my code?

조회 수: 1 (최근 30일)
hrushikesh kyathari
hrushikesh kyathari 2019년 6월 29일
댓글: Walter Roberson 2019년 6월 30일
R=[1,-0.5,-0.5];
for i=2:25
a = -0.50;
b = 0.50;
R = [R;i,(b-a).*rand(1,1) + a,(b-a).*rand(1,1) + a];
end
R=[R;26,0.5,0.5];
disp(R);
[D,I] = pdist2(R(:,(2:3)),R(:,(2:3)),'euclidean','Smallest',3);
D(1,:)=[];
I(1,:)=[];
disp(D);
disp(I);
Edge=zeros(52,3);
for i=1:26
%intersect is a function written correctly!
if intersect(R(i,2:3),R(I(1,i),2:3))==1
continue
else
Edge(i,1)=i;
Edge(i,2)=I(1,i);
Edge(i,3)=D(1,i);
end
end
for j=1:26
if intersect(R(j,2:3),R(I(2,j),2:3))==1
continue
else
Edge(j+26,1)=j;
Edge(j+26,2)=I(2,j);
Edge(j+26,3)=D(2,j);
end
end
disp(Edge);
Q=zeros(1,3);
for k=1:51
if Edge(k,:)==Q
Edge(k,:)=[];
end
end
disp(Edge);
The error I am receiving is:
Index in position 1 exceeds array bounds (must not exceed 42).
Error in ehe (line 39)
if Edge(k,:)==Q
  댓글 수: 3
hrushikesh kyathari
hrushikesh kyathari 2019년 6월 29일
편집: hrushikesh kyathari 2019년 6월 29일
Whenever I run the code, I am getting a change in error. Sometimes it is
Index in position....exceed 42,36,40.
I feel something is wrong with the last for loop used to delete empty rows,cause when I remove the loop, the code runs perfectly . Any suggestions for that.
the cyclist
the cyclist 2019년 6월 29일
I have run your code repeatedly, and get no error.
Do you have the problem on a fresh restart of MATLAB?

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

채택된 답변

Walter Roberson
Walter Roberson 2019년 6월 29일
mask = any(Edge,2);
Edge = Edge(mask,:);
or
mask = ~any(Edge,2);
Edge(mask,:) = [];
or
for k=51:-1:1
if Edge(k,:)==Q
Edge(k,:)=[];
end
end
  댓글 수: 2
hrushikesh kyathari
hrushikesh kyathari 2019년 6월 29일
편집: hrushikesh kyathari 2019년 6월 29일
Thank you, Mr Roberson, your answer has solved my problem. Could you please explain what is the difference between the two for loops, so that in future I can solve the bug myself.

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Startup and Shutdown에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by