簡體   English   中英

在 Matlab 中聚類一個 boolean 矩陣

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM