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

 采纳的回答

dpb
dpb 2017-7-21
编辑:dpb 2017-7-21
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
>>

更多回答(0 个)

类别

在 帮助中心 和 File Exchange 中查找有关 Introduction to Installation and Licensing 的更多信息

产品

标签

Community Treasure Hunt

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

Start Hunting!

Translated by