How to find first occurrences of a number in the beginning of blocks of that number?
16 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponses (2)
Walter Roberson
le 27 Fév 2018
targetval = 3;
num_wanted = 3;
find(x==targetval, num_wanted, 'first')
0 commentaires
Stephen23
le 27 Fév 2018
Modifié(e) : Stephen23
le 27 Fév 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 commentaires
Voir également
Catégories
En savoir plus sur Operators and Elementary Operations dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!