# 使用均值滤波器进行二维矩阵平滑

## smooth2a

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.

smooth2a.zip (1.30KB)

smooth2a.m