Re: [問題] 向量連結分類已回收

看板MATLAB作者 (1217(五)化學之夜)時間15年前 (2009/05/09 11:52), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/3 (看更多)
※ 引述《kunlin999 (max)》之銘言: : 假設我有n個m維的向量 : 其數值都是正整數 : 我把這些向量排成一個nxm的矩陣 : 若兩向量具有(m-1)維相同的值,則定義這兩向量是直接相連 : 再定義兩向量是相連的如果她們是直接相連或是透過其他向量來連 : 舉例來說 : (2,1,3)與 (2,2,3)是直接相連的 : 若有(2,1,3),(2,2,3),(1,2,3)則(2,1,3)與(1,2,3)也是(間接)相連 : 我要如何將相連的向量寫成新矩陣 : 也就是說原來的矩陣要拆解成數個小矩陣 : 而每個矩陣裡的向量是相連的 A=[1,2,3;1,2,4;2,2,3;2,3,4;1,1,4]; nA=size(A,1); [m1,m2]=meshgrid(1:nA); conn=false(nA,nA); conn(find(sum((A(m1,:)-A(m2,:)).^2,2)==1))=true; 現在 conn 是一個 nA-by-nA 的邏輯矩陣 如果第一個向量有連到第二個向量的話 那 conn(1,2) 就是 true , otherwise false (把 m1, m2 用 triu 之類的還可以再減少約一半的記憶體使用量) 接下來如果你有裝 BioInformatics Toolbox 的話 用裡面的 conncomp.m (connected component) 就可以把你要的數個小矩陣的向量的 index 找出來 剩下的應該很容易了~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.54.153
文章代碼(AID): #1A1FuKcF (MATLAB)
文章代碼(AID): #1A1FuKcF (MATLAB)