在Matlab中对逻辑数据进行分组

时间:2013-04-06 11:08:37

标签: matlab

我有一个矩阵,其中包含0和0的数据。我想在那个矩阵中找到一组(不是特定的大小)。有可能吗? 提前致谢!

1 个答案:

答案 0 :(得分:2)

如果您想要找到矩阵中的所有“连接组件”,请说BW,只需使用:

BW = logical([1 1 1 0 0 0 0 0
              1 1 1 0 1 1 0 0
              1 1 1 0 1 1 0 0
              1 1 1 0 0 0 1 0
              1 1 1 0 0 0 1 0
              1 1 1 0 0 0 1 0
              1 1 1 0 0 1 1 0
              1 1 1 0 0 0 0 0]);

L = bwlabel(BW,4)    %Result

这将是:

L =

     1     1     1     0     0     0     0     0
     1     1     1     0     2     2     0     0
     1     1     1     0     2     2     0     0
     1     1     1     0     0     0     3     0
     1     1     1     0     0     0     3     0
     1     1     1     0     0     0     3     0
     1     1     1     0     0     3     3     0
     1     1     1     0     0     0     0     0

现在,如果你想找到不同群体的大小:

for ii=1:max(L(:))
    length_vector(ii)=length(find(L==ii));
end
length_vector

这会给你:

length_vector =

    24     4     5