find all sequences between delimiters in an array

조회 수: 3 (최근 30일)
Kais
Kais 2021년 5월 11일
편집: Stephen23 2021년 5월 11일
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
Stephen23
Stephen23 2021년 5월 11일
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일
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.

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

카테고리

Help CenterFile Exchange에서 Characters and Strings에 대해 자세히 알아보기

제품


릴리스

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by