Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何计算矩阵中1和0的个数?_Matlab_Image Processing_Matrix_Computer Vision - Fatal编程技术网

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

Matlab 如何计算矩阵中1和0的个数?,matlab,image-processing,matrix,computer-vision,Matlab,Image Processing,Matrix,Computer Vision,我有一个图像,我只剪下一列。在此之后,我使其符合逻辑,因此此列中只有0和1 假设此列中的值为 1111000110000000000000011111111 我想计算每个1块或每个0块的长度 结果将是 1 - 4 (first 1) 0 - 3 (first 0) 1 - 2 and so on... 我知道只计算整个列,但我不能计算每个不同的块。任何人请帮帮我。让vec成为一行向量(1-by-n),然后你可以使用以下代码 rl = ( find( vec ~= [vec(2:end),

我有一个图像,我只剪下一列。在此之后,我使其符合逻辑,因此此列中只有0和1

假设此列中的值为

1111000110000000000000011111111
我想计算每个1块或每个0块的长度

结果将是

1 - 4 (first 1)
0 - 3 (first 0)
1 - 2 
and so on...

我知道只计算整个列,但我不能计算每个不同的块。任何人请帮帮我。

vec
成为一行向量(1-by-
n
),然后你可以使用以下代码

rl = ( find( vec ~= [vec(2:end), vec(end)+1] ) );
data =  vec( rl );
rl(2:end) = rl(2:end) - rl(1:end-1);
rl
将为您提供连续的0和1的数量,而
data
将告诉您每个块的数量是0还是1

这个问题与我们的工作密切相关

演示:

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

非常感谢。我已经试过了,但是我错了。是不是因为我的vec是n-by-1而不是1-by-n?错误是“使用horzcat CAT参数的错误维度不一致”。如果向量是
n
-by-1,则可以使用
vec=vec简单地对其进行转置data
将为您提供所需的信息。看我的编辑和示例。哦,我明白了。非常感谢谢。顺便问一下,这个函数叫什么?我的意思是,在matlab中,我对matlab很陌生。@Shai标记与此有何关系?@EitanT-解决方案是通过矢量化而不是一个loop@Shai但问题不是矢量化本身。。。我认为这个标签应该保留给那些专门针对矢量化代码的实现的问题。如果你的答案恰好是矢量化的,这很好,但这不应该成为重新标记的原因。这里的大多数MATLAB问题的答案都可以矢量化,但这并不意味着它们都应该在这个标签下。