MATLAB: 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

datadata sorting

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

Best Answer

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, []);