Filter löschen
Filter löschen

Diff but not when 0

2 Ansichten (letzte 30 Tage)
Kambren Rowlan
Kambren Rowlan am 21 Jul. 2017
Bearbeitet: dpb am 21 Jul. 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

Akzeptierte Antwort

dpb
dpb am 21 Jul. 2017
Bearbeitet: dpb am 21 Jul. 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
>>

Weitere Antworten (0)

Kategorien

Mehr zu Programming finden Sie in Help Center und File Exchange

Tags

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by