Find all occuarances of two numbers together

2 次查看(过去 30 天)
Hi,
I have an array, a = [ 0 -1 1 0 0 -1 1 0]
How can I fing all the ocurances of [ 1 0], ie. the index showing when the number 0 occurs after the number 1.
I want to create, b = [0 0 0 1 0 0 0 0 1].
I'm trying to use teh strfind fuction, but am stuck.
Thank you!
Inna

采纳的回答

Ameer Hamza
Ameer Hamza 2020-10-26
Try this
a = [ 0 -1 1 0 0 -1 1 0];
idx = strfind(a, [1 0])+1;
b = zeros(size(a));
b(idx) = 1;

更多回答(1 个)

Mathieu NOE
Mathieu NOE 2020-10-26
hello Inna
you have to test a vs [1 0] and not [0 1]
this is the code :
a = [ 0 -1 1 0 0 -1 1 0];
t = [1 0];
ind = findstr(a,t);
ind_zero = ind+1; % findstr output index is for the first term of "t" (1) => to get the index of the trailing "0" you need to add 1
b = zeros(size(a));
b(ind_zero) = 1
  2 个评论
Bruno Luong
Bruno Luong 2020-10-26
编辑:Bruno Luong 2020-10-26
Attention, better use strfind and not findstr, if a = 1
>> findstr(1,[0 1]) % not expected result
ans =
2
>> strfind(1,[0 1])
ans =
[]

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Characters and Strings 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by