Полагаю, что наиболее простым решением будет использование регулярного выражения с regexp
%binary string example
s = '0000000111110000'
%Get the start Index (SI) and the end Index (EI)
[SI,EI] = regexp(s,'0+$') %pattern 1
[SI,EI] = regexp(s,'0+1') %pattern 2
[SI,EI] = regexp(s,'(?<!0)1+') %pattern 3
. Заметил, что индекс в matlab начинается с 1, а не с 0.
Вы также можете использовать несколько регулярных выражений одновременно:
[SI,EI] = regexp(s,{'0+$','0+1','(?<!0)1+'})
Результат:
SI =
{
[1,1] = 13
[1,2] = 1
[1,3] = 9
}
EI =
{
[1,1] = 16
[1,2] = 8
[1,3] = 12
}