How to find first occurrences of a number in the beginning of blocks of that number?
16 次查看(过去 30 天)
显示 更早的评论
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 个评论
回答(2 个)
Walter Roberson
2018-2-27
targetval = 3;
num_wanted = 3;
find(x==targetval, num_wanted, 'first')
0 个评论
Stephen23
2018-2-27
编辑:Stephen23
2018-2-27
>> 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 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Operators and Elementary Operations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!