1

次のような行列を考えてみましょう

A =  0     1     0     1          
     1     1     0     0          
     0     0     0     0          
     1     1     1     1             

1 の各クラスターの平均サイズを計算したいと思います。クラスターは、2 つ以上の 1 が互いに近接している場合、つまり、隣または上/下にある場合に発生すると定義します。たとえば、この行列では、サイズ 3 のクラスターが左上隅にあり、サイズ 4 のクラスターが下の行にあります。

この情報を非視覚的な方法で抽出する方法が必要です。これは、さまざまな A に対して何度も行う必要があるためです。

4

1 に答える 1

3

バイナリ行列で連結成分 ( 1 のクラスターbwlabel)を分離する whichを使用することができます。

A =  [0     1     0     1          
      1     1     0     0          
      0     0     0     0          
      1     1     1     1 ];

[L,n] = bwlabel(A,8)  % # for a 8-pixel stencil 
                    % # (i.e. hor/vert/diag first neighbors)

また

[L,n] = bwlabel(A,4)  % # for 4-pixel stencil 
                      % # (just horizontal & vertical neighbors)


 L =  0     1     0     3
      1     1     0     0
      0     0     0     0
      2     2     2     2

そうすることで、さまざまな連結成分Lラベルを付ける行列が得られます。n

次に、いくつかの統計を抽出したい場合があります。たとえば、クラスターのサイズをヒストグラム化することができます。

   cluster_size =  hist(L(:),0:n);
   cluster_size = cluster_size(2:end);  % # histogram of component vs. size 
                                        % # (without zeros)    

   hist(cluster_size)                   % # histogram of sizes

ここに画像の説明を入力

これは、1 つの要素のクラスターが 1 つ、3 つのクラスターが 1 つ、4 つのクラスターが 1 つあることを示しています。

最後に、クラスターの平均サイズを探している場合は、次のことができます。

mean(cluster_size)

     2.6667
于 2013-05-10T07:36:52.080 に答える