Как вы проводите линию между точками в 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), '-*');