Could you please check my code?
    4 次查看(过去 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 个评论
  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
      
      
 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
更多回答(0 个)
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



