看板 MATLAB 關於我們 聯絡資訊
: 首先, : 單從你目前的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
mp19990920:不客氣 12/10 17:41
mp19990920:由於您要的是 "新連接的點尋找下一個最接近的點" 那該 12/10 17:44
mp19990920:網址所提供的解釋就不滿足您的需求了 12/10 17:45
mp19990920:您要找的不是tree 而是 path 12/10 17:46
mp19990920:請見 http://www.csie.ntnu.edu.tw/~u91029/Path.html 12/10 17:49