Как вы рисуете линию между точками в Matlab? - PullRequest
6 голосов
/ 01 апреля 2011

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

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

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

Любая помощь будет принята с благодарностью!

Ответы [ 6 ]

10 голосов
/ 01 апреля 2011

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

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');
7 голосов
/ 01 апреля 2011

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

plot([x1 x2],[y1 y2]);
2 голосов
/ 29 августа 2014

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

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

2 голосов
/ 01 апреля 2011

Если вы имели в виду 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, представленных в виде матрицы смежности.

1 голос
/ 20 мая 2015

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

0 голосов
/ 09 декабря 2014

Если вы хотите увидеть эффект от рисования линий, вы можете использовать plot внутри for, обратите внимание, что data - это матрица * 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), '-*');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...