在matlab中找到二进制数组中位模式的位置

Eri*_*agh 2 arrays binary matlab pattern-matching

我有一个二进制数据数组,其长度为1和0,我想找到它变化时的索引.

a = [ 1 1 1 1 1 0 0 0 0 0 0 1 1]
Run Code Online (Sandbox Code Playgroud)

我想搜索[1 0][0 1]找到过渡点.如果可能的话,我想避免长循环找到这些.有任何想法吗?

jub*_*0bs 6

这样的事情应该做的工作:

b = diff(a);                     % (assuming 'a' is a vector)
oneFromZero = find(b ==  1) + 1; % vector of indices of a '1' preceded by a '0'
zeroFromOne = find(b == -1) + 1; % vector of indices of a '0' preceded by a '1'
Run Code Online (Sandbox Code Playgroud)

根据您的具体需求,您可能想要也可能不想添加1到生成的索引数组中.