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

看板MATLAB作者 (max)時間16年前 (2009/05/09 23:31), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串3/3 (看更多)
※ 引述《youbet (1217(五)化學之夜)》之銘言: : 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 找出來 : 剩下的應該很容易了~ 你的想法比我自己的還來得簡單, 也讓我瞭解原來有邏輯矩陣這個東西, 試問邏輯矩陣與一般的0-1矩陣的差別為何? 此外對於conn(find(sum((A(m1,:)-A(m2,:)).^2,2)==1))=true "==1"並不是我要的, 我的定義大概是A(m1,:)-A(m2,:)具有size(A,2)-1個0就算相連 有什麼快速的方法可以處理嗎? 另外,若是沒有BioInformatics toolbox,該怎麼辦呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.165.218.101

05/10 23:07, , 1F
一堆(-1,0,1)的.^2加起來是一跟你的條件應該是一樣的
05/10 23:07, 1F

05/10 23:08, , 2F
沒toolbox我想至少得用到一個for迴圈吧~ 你的case可能不難
05/10 23:08, 2F
文章代碼(AID): #1A1Q6u5i (MATLAB)
文章代碼(AID): #1A1Q6u5i (MATLAB)