Re: [問題] 向量連結分類已回收
※ 引述《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
討論串 (同標題文章)