在MATLAB中,有一个bwlabel
函数,给定一个二进制向量,例如x=[1 1 0 0 0 1 1 0 0 1 1 1 0]
give(bwlabel(x)
):
[1 1 0 0 0 2 2 0 0 3 3 3 0]
Run Code Online (Sandbox Code Playgroud)
但我想要获得的是
[1 1 2 2 2 3 3 4 4 5 5 5 6]
Run Code Online (Sandbox Code Playgroud)
我知道我可以否定x
获得(bwlabel(~x)
)
[0 0 1 1 1 0 0 2 2 0 0 0 3]
Run Code Online (Sandbox Code Playgroud)
但我怎样才能将它们结合起来?
全部在一行:
y = cumsum([1,abs(diff(x))])
Run Code Online (Sandbox Code Playgroud)
也就是说,abs(diff(x))
二进制矢量中的斑点会发生变化,您将获得累积和的输出.