Re: [討論] 每連結一點尋找最近座標點

看板MATLAB作者 (芒果哥)時間13年前 (2012/12/10 14:11), 編輯推噓0(005)
留言5則, 1人參與, 最新討論串3/4 (看更多)
: 首先, : 單從你目前的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
您要找的不是tree 而是 path
12/10 17:46, 4F

12/10 17:49, , 5F
文章代碼(AID): #1GnNqJsa (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1GnNqJsa (MATLAB)