Как вы проводите линию между точками в MATLAB?

Я ищу, чтобы создать "сеть" между набором точек, где данные говорят, есть ли связь между любыми двумя точками.

то, о чем я думал, было бы путем построения каждой пары точек и наложение каждой пары поверх друг друга.

однако, если есть способ просто провести линию между двумя точками, это было бы намного проще.

любая помощь будет оценили!

6 ответов


Если вы можете организовать координаты x и y ваших сегментов линии в массивы 2-на-N, вы можете использовать функцию участка для построения каждого столбца матриц в виде строки. Вот простой пример, чтобы нарисовать четыре линии единичного квадрата:

x = [0 1 1 0; ...
     1 1 0 0];
y = [0 0 1 1; ...
     0 1 1 0];
plot(x,y);

это построит каждую линию в другом цвете. Чтобы построить все линии как черные, сделайте следующее:

plot(x,y,'k');

использовать plot. Предположим, что ваши две точки a = [x1 y1] и b = [x2 y2], тогда:

plot([x1 x2],[y1 y2]);

Если вы имели в виду I'm looking to create a "web" between a set of points where the data tells whether there is a link between any two points на самом деле какая-то graph представлен своей матрицей смежности (напротив других ответов простыми средствами соединения точек), затем:

этой функции gplot действительно может быть подходящим инструментом для вас. Это основной инструмент визуализации для построения узлов и связей graph, представленного в виде матрицы смежности.


использовать эту функцию:

function [] = drawline(p1, p2 ,color)
%enter code here
theta = atan2( p2(2) - p1(2), p2(1) - p1(1));
r = sqrt( (p2(1) - p1(1))^2 + (p2(2) - p1(2))^2);
line = 0:0.01: r;
x = p1(1) + line*cos(theta);
y = p1(2) + line*sin(theta);
plot(x, y , color)

называй это как:

drawline([fx(i) fy(i)] ,[y(i,1) y(i,2)],'red')

кредит: http://www.mathworks.com/matlabcentral/answers/108652-draw-lines-between-points#answer_139175


допустим, вам нужна линия с координатами (x1,y1) и (x2, y2). Затем вы делаете вектор с координатами x и y: x = [x1 x2] и y=[y1 y2]. Matlab имеет функцию под названием "Line", которая используется таким образом: строка (x,y)


если вы хотите увидеть эффект рисования линий, вы можете использовать plot внутри for петли, обратите внимание, что data - это матрица n * 2, содержащая "x, y" из " n " точек

clf(figure(3))
for i = 1 : length(data)-1
 plot([data(i,1),data(i+1,1)], [data(i,2),data(i+1,2)], '-*');
 hold on
end
hold off

или можно использовать этот оператор, чтобы нарисовать его в один шаг

plot(data(:,1), data(:,2), '-*');