Effacer les filtres
Effacer les filtres

Diff but not when 0

2 vues (au cours des 30 derniers jours)
Kambren Rowlan
Kambren Rowlan le 21 Juil 2017
Modifié(e) : dpb le 21 Juil 2017
I need a way to do what diff does but ignore differences when the upper bound or lower bound is 0;
X = [1 1 2 0 5 0 13 21];
Y = diff(X)
Y =
0 1 -2 5 -5 13 8
X = [1 1 2 0 5 0 13 21];
Y = the_diff_I_Need(X)
Y =
0 1 0 0 0 0 8
Efficiency is important here.
Thanks

Réponse acceptée

dpb
dpb le 21 Juil 2017
Modifié(e) : dpb le 21 Juil 2017
X(X==0)=nan; % flag zero locations
d=diff(X); % compute difference w/ flagged
d(isnan(d))=0; % replace NaN in output if desired
For the sample given
>> Y=X;Y(Y==0)=nan;
>> d=diff(Y); d(isnan(d))=0
d =
0 1 0 0 0 0 8
>>

Plus de réponses (0)

Catégories

En savoir plus sur Programming dans Help Center et File Exchange

Tags

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by