Understand the fillmissing function with movmean
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Tiago Dias
el 27 de Mzo. de 2018
Comentada: Tiago Dias
el 28 de Mzo. de 2018
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?
0 comentarios
Respuesta aceptada
Guillaume
el 27 de Mzo. de 2018
Editada: Guillaume
el 27 de Mzo. de 2018
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.
5 comentarios
Guillaume
el 28 de Mzo. de 2018
There is no fillmissing option to do what you want, and it's a bit unusual to want that.
To me, it looks like you would be better off with an interpolation rather than a moving mean. Wouldn't
fillmissing(A, 'linear')
be good enough for you?
Más respuestas (0)
Ver también
Categorías
Más información sobre Preprocessing Data en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!