Given a sequence of numbers and a start and an end delimiters, how to find the index (start and end) of all possible sequence of numbers between delimiters (sequences can be of any length). Example:
v = [1 1 0 2 0 2 1 2 1 1 1 0 2 1 2 0 0 1 1 1 1 1 1 2 1 0 ]
A list of non-overalpping sequences and their start and end index that begin with 2 and end with 0 would be:
[2 0]
[2 1 2 1 1 1 0]
[2 1 2 0]
[2 1 0]
I feel like this could be solved using regular expression.

댓글 수: 2

If the numbers are always positive integers <10 then this is easy. If the values can be >=10 or if you want to consider non-integer values then the task requires a bit more thought. What restrictions/limits do you have on the number values?
Kais
Kais 2021년 5월 11일
I can live with the range of numbers in the example. Three values!

댓글을 달려면 로그인하십시오.

 채택된 답변

Stephen23
Stephen23 2021년 5월 11일
편집: Stephen23 2021년 5월 11일
v = [1,1,0,2,0,2,1,2,1,1,1,0,2,1,2,0,0,1,1,1,1,1,1,2,1,0];
[begIdx,endIdx,~,match] = regexp(sprintf('%d',v),'2.*?0')
begIdx = 1×4
4 6 13 24
endIdx = 1×4
5 12 16 26
match = 1×4 cell array
{'20'} {'2121110'} {'2120'} {'210'}

추가 답변 (1개)

Jonas
Jonas 2021년 5월 11일

0 개 추천

you could convert the array to a string or char array and then use extractBetween() which does what you want

댓글 수: 1

Kais
Kais 2021년 5월 11일
Thanks! it does not unfortunately. It will return overlapping sequences and it does not return indices.

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터 및 File Exchange에서 Characters and Strings에 대해 자세히 알아보기

제품

릴리스

R2021a

질문:

2021년 5월 11일

편집:

2021년 5월 11일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by