2014-12-16 2 views
0

У меня есть набор координат, и я хочу рассчитать расстояния между этими точками и в соответствии с определенным значением, скажем, 1.3. Я хочу, чтобы цвет точки в синем:точки окраски в соответствии с их расстояниями

Я начал программу так:

M=load('data.csv'); 
xA=M(1:514,1); 
yA=M(1:514,2); 
xB=M(514:1027,1); 
yB=M(514:1027,2); 
PosA =[xA yA]; 
[num1] = size(PosA); 
R = zeros(num1,num1); 

for i=1:num1 
    for j=1:num1 
     for k=1:num1 
      for l=1:num1 
       if i~=j~=k~=l 
       R(i,j)=norm(PosA(i,:)-PosA(j,:)); 
       R(j,k)=norm(PosA(j,:)-PosA(k,:)); 
       R(k,l)=norm(PosA(k,:)-PosA(l,:)); 
       R(l,i)=norm(PosA(l,:)-PosA(i,:)); 
       if(R(i,j)=1.3284 & R(j,k)=1.44 & R(k,l)=1.33 &R(l,i)=1.32) 
        plot(xA(i),yA(i),'bo') /*and here is my problem exactly I'm not sure about how to give the correct indexing so that if I calculated the distances between these points and it satisfy the condition to plot these points in blue*/ 

       else 
        plot(xA,yA,'ro') /*else plot the points in red*/ 

       end 
      end 
     end 
    end 
end 
+0

возможно дубликат [Как я могу сделать «карта цветов» участок в MATLAB?] (HTTP : //stackoverflow.com/questions/15754459/how-can-i-make-a-color-map-plot-in-matlab) –

+0

Не совсем уверен, что вы пытаетесь сделать, но ваши xB и yB никогда не используются , Также с вашими вложенными циклами вы будете перезаписывать значения вашей матрицы R на последующих проходах. Если вам нужно пройти этот маршрут, вы можете отправить диапазон на указатели, чтобы они не дублировали значения (например, 'для i = 1: num1; для j = i: num1;') –

ответ

1

Используйте логическую индексацию, чтобы найти все точки с d<1.3 и сюжетом отдельно.

plot(x(d<1.3),y(d<1.3),'b.',x(d>=1.3),y(d>=1.3,'r.'); 
0

Вы должны использовать команду bwdist. Допустим, вы выбрали точку 2,2 для точки интереса:

Edited сделать синий цвет:

bw = zeros(5,5); % Define a 5x5 matrix of zeros 
bw(2,2) = 1;  % Set your coordinate to the value 1 

D = bwdist(bw); % For all pixels, calculates the distance from your point 

mask = (D < 1.3); % Create a mask of points with distance below your threshold 

bwout = bw; 
bwout(:,:,3) = mask; 
image(bwout);  % Creates an image where points below your threshold are blue 
+0

При необходимости вы также можно выбрать несколько точек (установить их все в 1 в матрице bw), а для всех пикселей bwdist будет вычислять расстояние до ближайшей точки, которую вы идентифицировали –

Смежные вопросы