Moving mean/std based on number of NaN
1 view (last 30 days)
Show older comments
Hello,
Is there a way to compute movstd but replace with NaN if the window includes 2 or more NaN?
A=[4, 8,6,3,NaN,NaN,-1,9,4,5]'
This window is 4
M=movstd(A,4,'omitnan','Endpoints','discard')
M is
2.217355783
2.516611478
2.121320344
2.828427125
7.071067812
5
4.11298756
With the condition to replace with NaN if the window includes 2 or more NaN
M should be
2.217355783
2.516611478
NaN
NaN
NaN
5
4.11298756
0 Comments
Accepted Answer
More Answers (1)
Walter Roberson
on 28 Aug 2021
A=[4, 8,6,3,NaN,NaN,-1,9,4,5]'
window = 4;
M=movstd(A,window,'omitnan','Endpoints','discard')
An = isnan(A.');
starts = strfind([false, An], [false,true,true])
stops = strfind([An,false], [true,true,false])+1
M(unique(cell2mat(arrayfun(@(start,stop) start-window+2:stop-1, starts, stops, 'uniform', 0)))) = nan
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!