NDNANFILTER N-dimensional zero-phase digital filter, ignoring NaNs.
[Y,W] = ndnanfilter(X,HWIN,F);
X - Multidimensional data with/without NaNs.
HWIN - Window's name (N-D moving average by default: 'rectwin').
F - Vector specifying the semi-width of the window for each dimension.
Y - Filtered/smoothed X data (same size as X!) with zero phase shift.
W - N-dimensional window with central symmetry generated by a special subfunction called NDWIND.
This function applies a N-dimensional convolution of X with W, using the MATLAB's IMFILTER or CONVN function, ignoring/interpolating/filling NaNs.
By default, the edges are padded with the values of X at the borders with the PADARRAY MATLAB's function. When PADARRAY is not found, the program performs zero-padding.
* See the screenshot.
Brilliant! This is a well-written function with excellent documentation. It is nearly as fast as imfilter. Thanks for sharing.
Nice and fast, versatile and seems to work. Kudos!
Works great, wish they would implement NaN ignoring options like this in the stock Matlab filters. Good job!
2Dimensional hamming! Incrdible!
This is what FEx is all about! Thanks Carlos!
Fixed bug: ynan = any(inan(:)) instead of any(inan).
1. Fixed small bug with vector input (force F=0 in the second dimension)
Inspired by: moving_average v3.1 (Mar 2008)