matlab練習程式(多線段交點)

2021-09-07 21:26:42 字數 1161 閱讀 8280

很簡單的演算法,這裡是把每對線段都進行比較了。

還有一種似乎先通過x和y排序再進行交點判斷的,不過那種方法我還沒看太明白。

這裡的方法如下:

1.根據線段的端點求兩條直線的交點。

2.判斷直線的交點是否在兩條線段上。

結果如下:

matlab**如下:

clear all;close all;clc;

n=20

;p=rand(n,4

); %(x1,y1,x2,y2)線段兩端點

for i=1

:n pbar=p(i,:);

pbar=reshape(pbar,[2,2

]); line(pbar(

1,:),pbar(2

,:));

endhold on;

for i=1:n-1

p1=p(i,:);

k1=(p1(2)-p1(4))/(p1(1)-p1(3

)); b1=p1(2)-k1*p1(1

);

for j=i+1

:n p2=p(j,:);

k2=(p2(2)-p2(4))/(p2(1)-p2(3

)); b2=p2(2)-k2*p2(1

);

x=-(b1-b2)/(k1-k2); %求兩直線交點

y=-(-b2*k1+b1*k2)/(k1-k2);

%判斷交點是否在兩線段上

if min(p1(1),p1(3))<=x && x<=max(p1(1),p1(3)) &&...

min(p1(

2),p1(4))<=y && y<=max(p1(2),p1(4)) &&...

min(p2(

1),p2(3))<=x && x<=max(p2(1),p2(3)) &&...

min(p2(

2),p2(4))<=y && y<=max(p2(2),p2(4

))

plot(x,y,'.

');endend

end

matlab練習程式(DBSCAN)

和kmeans相比,不需要事先知道資料的類數。以程式設計的角度來考慮,具體演算法流程如下 1.首先選擇乙個待處理資料。2.尋找和待處理資料距離在設定半徑內的資料。3.將找到的半徑內的資料放到乙個佇列中。4.拿佇列頭資料作為當前待處理資料並不斷執行第2步。5.直到遍歷完佇列中所有資料,將這些資料記為一...

matlab練習程式(c c 呼叫matlab)

就我目前了解的c 呼叫matlab有兩種方法。第一種是通過matlab引擎呼叫,也就是這裡用到的方法。第二種是用matlab將m檔案編譯為相應的h lib dll檔案再加以呼叫。使用engine所用到的h和lib檔案基本在d program files matlab r2010b extern裡面,...

matlab練習程式(SUSAN檢測)

susan運算元既可以檢測角點也可以檢測邊緣,不過角點似乎比不過harris,邊緣似乎比不過canny。不過思想還是有點意思的。主要思想就是 首先做乙個和原影象等大的目標影象。然後用乙個圓形的模板,用模板去遍歷原影象每個畫素,把模板內的每個畫素都和模板中心畫素比較,如果灰度小於乙個閾值,那麼就對目標...