如何计算矩阵中的1和0的数量?

Bow*_*use 3 matlab image-processing matrix

我的图像中只切出了一列.在那之后,我使它成为逻辑,所以在这一列中只有0和1.

假设我在这一列中的值是

1111000110000000000000011111111
Run Code Online (Sandbox Code Playgroud)

我想计算每个块或每个零块的长度.

结果将是

1 - 4 (first 1)
0 - 3 (first 0)
1 - 2 
and so on...
Run Code Online (Sandbox Code Playgroud)

我知道只计算整个列,但我不能为每个不同的块执行此操作.有人请帮助我.

Sha*_*hai 6

vec是一个向量(1逐个n零和一的),那么你可以使用下面的代码

rl = ( find( vec ~= [vec(2:end), vec(end)+1] ) );
data =  vec( rl );
rl(2:end) = rl(2:end) - rl(1:end-1);
Run Code Online (Sandbox Code Playgroud)

rl将给出连续的0和1的数量,同时data将告诉您每个块是零还是一个.

这个问题与行程编码密切相关.

演示:

vec = [1 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1];
rl = ( find( vec ~= [vec(2:end), vec(end)+1] ) );
data =  vec( rl ),
rl(2:end) = rl(2:end) - rl(1:end-1),

data =
     1     0     1     0     1

rl =
     4     3     2    14     8
Run Code Online (Sandbox Code Playgroud)

  • @BowHouse`data`将为您提供所需的信息.看我的编辑和例子. (2认同)