[英]Clustering a boolean matrix in Matlab
假設我們有一個 Boolean 矩陣,如下所示:
0 0 1 0 0 1 0
1 1 0 0 1 0 0
0 0 0 0 0 1 1
0 0 0 0 0 1 0
0 0 0 0 0 1 1
這樣解釋:每一行是一個水果,每一列是一個人。 position (i, j) 中的 '1' 表示人 j 想吃水果 i。 我想對這個矩陣進行“聚類”,創建子矩陣來指示人們爭奪水果子集的子集。 在上面的示例中,我希望在 output 中看到:
0 0 1 0 0 1 0
0 0 0 0 0 0 0
0 0 0 0 0 1 1
0 0 0 0 0 1 0
0 0 0 0 0 1 1
和
0 0 0 0 0 0 0
1 1 0 0 1 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
有沒有一種簡單的方法可以做到這一點,例如,在 Matlab 中?
謝謝。
該描述過於非正式,基於單個示例進行工程設計可能不是一個好主意。
Howewer:如果示例僅顯示 2 個分區(這是我的解釋),則可以通過以下方式輕松實現:
- Create undirected graph G with one vertex for each row
- Iterate over all "N over 2" row-pairs (= nested i,j loop skipping symmetries)
- If the pair (rowA, rowB) shares some 1 in a column -> add edge (rowA, rowB) to G
- Compute all "connected components" of G
任何健全的圖形庫都將提供所需的原語。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.