Clear Filters
Clear Filters

I have an array [0,0,0,0,1​23,0,138,4​4,123,0,0,​0,0,0,135,​0,123,0,0,​125.......​.] I want to find starting and ending index for pattern [123,0] like[5,6,9,10....] Please help me find the ending indices

1 view (last 30 days)
I can find the starting index using below function. function start = findPattern2(array, pattern)
len = length(pattern);
start = find(array==pattern(1));
endVals = start+len-1; start(endVals>length(array)) = [];
for pattval = 2:len
locs = pattern(pattval) == array(start+pattval-1);
start(~locs) = [];
end

Accepted Answer

Jan
Jan on 14 Jun 2018
Edited: Jan on 14 Jun 2018
pattern = [123, 0];
a = [0,0,0,0,123,0,138,44,123,0,0,0,0,0,135,0,123,0,0,125];
idx = strfind(a, [123,0]);
result = reshape([idx; idx + length(pattern) - 1], 1, []);

More Answers (0)

Categories

Find more on Shifting and Sorting Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!