File Exchange

image thumbnail


version (1.27 KB) by Greg Reeves
Smooths a 2D matrix using a mean filter over a user-defined rectangle. Ignores and preserves NaNs.


Updated 13 Mar 2009

No License

Smooths 2D array data. Ignores NaN's.

function matrixOut = smooth2a(matrixIn,Nr,Nc)

This function smooths the data in matrixIn using a mean filter over a
rectangle of size (2*Nr+1)-by-(2*Nc+1). Basically, you end up replacing
element "i" by the mean of the rectange centered on "i". Any NaN
elements are ignored in the averaging. If element "i" is a NaN, then it
will be preserved as NaN in the output. At the edges of the matrix,
where you cannot build a full rectangle, as much of the rectangle that
fits on your matrix is used (similar to the default on Matlab's builtin
function "smooth").

"matrixIn": original matrix
"Nr": number of points used to smooth rows
"Nc": number of points to smooth columns. If not specified, Nc = Nr.

"matrixOut": smoothed version of original matrix


Explanation of screenshot:
The left plot is a pcolor (shading interp, axis equal) of a "jagged" 906x1024 matrix. Note that the edges have NaN values (white coloring). On the right, pcolor of output of smooth2a, with Nr = Nc = 50. NaN's are preserved, but do not affect the smoothing of adjacent elements.

Cite As

Greg Reeves (2021). smooth2a (, MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2007a
Compatible with any release
Platform Compatibility
Windows macOS Linux

Inspired by: smooth2

Inspired: filt2 2D geospatial data filter

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!