Subtracting vector elements, with an if condition?

15 visualizzazioni (ultimi 30 giorni)
Hey guys,
I need to subtract every element in my array with the element next to it and before it, then if the result of the subtraction is 0 on either subtraction, I need a new array where the elements which weren't 0 are keep their original values, but the elements which were 0 stay 0. Is this possible?
a=[1 2 3 4 5 6 7 7 7 7 7 8 9 10 11 12 13];
b=[1 2 3 4 5 6 0 0 0 0 0 8 9 10 11 12 13];
Thanks in advance!

Risposta accettata

Stephen23
Stephen23 il 10 Mag 2018
Modificato: Stephen23 il 10 Mag 2018
a = [1 2 3 4 5 6 7 7 7 7 7 8 9 10 11 12 13];
b = a;
d = diff(a)==0;
b([false,d] | [d,false]) = 0

Più risposte (2)

Walter Roberson
Walter Roberson il 10 Mag 2018
b = a;
mask = b(1:end-1) = b(2:end);
b([false,mask]|[mask|false]) = 0;

Sanshu Bhutiani
Sanshu Bhutiani il 10 Mag 2018
Thanks everybody for the answers, it's really appreciated :).

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by