Moving mean/std based on number of NaN
2 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
更多回答(1 个)
Walter Roberson
2021-8-28
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 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 NaNs 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!