MATLAB: Understand the fillmissing function with movmean

fillmissing movmean

Hi, I would like to ask how the fillmissing movmean method works.
I got A
A = [1 2 5;4 5 7;NaN -1 8;7 6 0];
A1 = fillmissing(A,'movmean',2);
A2 = fillmissing(A,'movmean',3);
A1 turns the NaN into 4, and A2 turns into 5.5.
I tried to open the function fillmissing but wasn't able to find how the calculation is made.
The 4 is the result of a nanmean of (4+NaN)/1 = 4, divided by 1 because it is a nanmean? The 5 is the result of a nanmean of (4+NaN+7)/2 = 11/3 = 5.5? divided by 2 because it is a nanmean?

Best Answer

The missing elements are in effect calculated with
movmean(A, k, 'omitnan')
with k your windows size.
As per the movmean documentation, when 'omitnan' is specified, the window is reduced as necessary when NaNs are encountered. When k is 2 movmean is normally the mean of the element and the previous one, so when a NaN is encountered the result is just the previous element, hence why you get 4. When k is 3 the |movmean |is the mean of the element and the ones on either side, so when a NaN is encountered the result is just the mean of the neighbouring elements.
edit: the best way to actually understand what is going on is to set a breakpoint at the start of the fillmissing function and step through it after you've called it.