作者mangobrother (芒果哥)
看板MATLAB
标题Re: [讨论] 每连结一点寻找最近座标点
时间Mon Dec 10 14:11:29 2012
: 首先,
: 单从你目前的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
1F:→ mp19990920:不客气 12/10 17:41
2F:→ mp19990920:由於您要的是 "新连接的点寻找下一个最接近的点" 那该 12/10 17:44
3F:→ mp19990920:网址所提供的解释就不满足您的需求了 12/10 17:45
4F:→ mp19990920:您要找的不是tree 而是 path 12/10 17:46