Re: [討論] 每連結一點尋找最近座標點
: 首先,
: 單從你目前的code來看,
: 這不叫做寫matlab程式!
: 而是 "使用matlab的語法寫程式"
: 提供兩個替代方案給您參考:
: 1. 使用矩陣來運算
: z = complex(x_node, y_node);
: nZ = length(z);
: matDist1 = abs(repmat(z(:), 1, nZ) - repmat(z(:).', nZ, 1));
: (因為這個問題中matDist必為對稱,所以此法不太適合此處)
: 2. 使用內建function來運算
: distlist = pdist([x_node, y_node], 'euclidean');
: matDist2 = squarefor(distlist);
: 寫matlab程式,
: 就是要用矩陣的角度來思考程式資料流,
: 然後盡量使用內建function來完成。
這邊受教了,謝謝您的建議,我也深覺得自己在這部分能力思考非常不足
如您所打的這段,輕鬆做到我所需要的內容,只是可能剛好KEY錯
應是 squareform
: : 接下來是想要從leader點開始連接最近的點
: : 首要是先找出除了leader外另外九點離leader最近的點進行連線
: 目前你卡住的問題不難,
: 但你可能忽略掉幾件事情要考慮,
: 假設目前連好3個點了(x),
: 第4個點怎麼找?
: 單純找離leader最近?
: 離這3個點其中之一最近?
: o leader
: x-----x o
: |
: |
: |o
: |
: x
: 找到後與誰相連?
: leader?其他點?
: 您要處理的問題是圖論的領域,
: 給您以下這個網址參考參考:
: http://www.csie.ntnu.edu.tw/~u91029/SpanningTree.html
5 leader 1
o o-----o
4 |
o |
3 |
o----------o 2
每次都從新連接的點尋找下一個最接近但未被連接過的點進行連結
連結後再繼續找下一位離最新連接點最近的點
譬如上面的示意圖 leader離節點'1'距離為'二' 但離節點3距離為'三'
所以連接到節點1而非節點3
相對於節點1,節點2.3.4.5離他最近的是2,故連接到節點2
向對於節點2,節點3.4.5離他最近的是3,故連接到節點3
單純找最短距離的點而不考慮其他因素
感謝您的網址提供圖文解釋的參考,相當讓人容易理解。
最後感謝您的回文,非常感激
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 120.96.81.66
→
12/10 17:41, , 1F
12/10 17:41, 1F
→
12/10 17:44, , 2F
12/10 17:44, 2F
→
12/10 17:45, , 3F
12/10 17:45, 3F
→
12/10 17:46, , 4F
12/10 17:46, 4F
→
12/10 17:49, , 5F
12/10 17:49, 5F
討論串 (同標題文章)