Filter löschen
Filter löschen

searching first two consecutive ones and set to 0

2 Ansichten (letzte 30 Tage)
VASUNDHARA V
VASUNDHARA V am 25 Feb. 2022
Kommentiert: VASUNDHARA V am 25 Feb. 2022
y=[1 1 1 1 1 1 1 1 1 1 1]
i want to search for first two consecutive ones everytime and allocate them 0
like this
y=[0 0 1 1 1 1 1 1 1 1 1]

Akzeptierte Antwort

Arif Hoq
Arif Hoq am 25 Feb. 2022
Bearbeitet: Arif Hoq am 25 Feb. 2022
try this:
y=[1 1 1 1 1 1 1 1 1 1 1];
idx=y(1:2);
b=find(y(idx));
if y(b)==1
y(b)=0;
end
disp(y)
0 0 1 1 1 1 1 1 1 1 1
  3 Kommentare
Arif Hoq
Arif Hoq am 25 Feb. 2022
my pleasure
Jan
Jan am 25 Feb. 2022
This does not work, if y does not start ith two 1 values:
y=[0 0 1 1 1 1 1 1 1 1 1]
y = 1×11
0 0 1 1 1 1 1 1 1 1 1
idx=y(1:2);
b=find(y(idx));
Array indices must be positive integers or logical values.
if y(b)==1
y(b)=0;
end
disp(y)

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Jan
Jan am 25 Feb. 2022
Bearbeitet: Jan am 25 Feb. 2022
y = [0 0 1 1 1 1 1 1 1 1 1];
index = strfind(y, [1, 1]);
if any(index)
y(index(1):index(1)+1) = 0;
end
y
y = 1×11
0 0 0 0 1 1 1 1 1 1 1
  3 Kommentare
Jan
Jan am 25 Feb. 2022
As fas as I understand, this would be working then:
if all(y(1:2) == 1)

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Statistics and Machine Learning Toolbox finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by