How to find first occurrences of a number in the beginning of blocks of that number?
14 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
For example I have x = [1 2 2 3! 0 0 0 3! 3 3 0 1 1 3! 3 4]; And I need indices of first threes associated its block. Signed with ! In this case indices are: 4,8,14
0 comentarios
Respuestas (2)
Walter Roberson
el 27 de Feb. de 2018
targetval = 3;
num_wanted = 3;
find(x==targetval, num_wanted, 'first')
0 comentarios
Stephen23
el 27 de Feb. de 2018
Editada: Stephen23
el 27 de Feb. de 2018
>> vec = [1,2,2,3,0,0,0,3,3,3,0,1,1,3,3,4];
>> idx = diff(vec==0)>0;
>> idb = find([true,idx]);
>> ide = find([idx,true]);
>> foo = @(v)v&cumsum(v)==1;
>> baz = @(b,e)foo(3==vec(b:e)); % set value to match here.
>> tmp = arrayfun(baz,idb,ide,'uni',0);
>> find([tmp{:}])
ans =
4 8 14
0 comentarios
Ver también
Categorías
Más información sobre Operators and Elementary Operations en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!