Could you please check my code?
    4 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    hrushikesh kyathari
 el 29 de Jun. de 2019
  
    
    
    
    
    Comentada: Walter Roberson
      
      
 el 30 de Jun. de 2019
            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 comentarios
  the cyclist
      
      
 el 29 de Jun. de 2019
				I have run your code repeatedly, and get no error.
Do you have the problem on a fresh restart of MATLAB? 
Respuesta aceptada
  Walter Roberson
      
      
 el 29 de Jun. de 2019
        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 comentarios
Más respuestas (0)
Ver también
Categorías
				Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



