MATLAB: Averaging sections of a vector

A=[1 3 -999 -999 -999 -999 4 9 8 -999 -999 -999]; Here I want to get averages of three elements by ignoring -999. But in the final answer, if there were cases with three -999 in a given sector, it needs to be replaced by NaN. For an example, final answer of the above should B=[2 NaN 7 NaN]
Thanks.

Best Answer

% Sample data
A=[1 3 -999 -999 -999 -999 4 9 8 -999 -999 -999];
% Replace the 'missing' -999 values with NaN
A(ismissing(A, -999)) = NaN;
% If you have a release that doesn't include ismissing, use ==
A(A == -999) = NaN;
% Take the mean, omitting NaN unless all the elements whose mean
% are being computed are NaN
M = mean(reshape(A, 3, []), 'omitnan')