This example shows how to use convolution to smooth 2-D data that contains high-frequency components.
Create 2-D data using the
peaks function, and plot the data at various contour levels.
Z = peaks(100); levels = -7:1:10; contour(Z,levels)
Inject random noise into the data and plot the noisy contours.
Znoise = Z + rand(100) - 0.5; contour(Znoise,levels)
conv2 function in MATLAB® convolves 2-D data with a specified kernel whose elements define how to remove or enhance features of the original data. Kernels do not have to be the same size as the input data. Small-sized kernels can be sufficient to smooth data containing only a few frequency components. Larger sized kernels can provide more precision for tuning frequency response, resulting in smoother output.
Define a 3-by-3 kernel
K and use
conv2 to smooth the noisy data in
Znoise. Plot the smoothed contours. The
'same' option in
conv2 makes the output the same size as the input.
K = 0.125*ones(3); Zsmooth1 = conv2(Znoise,K,'same'); contour(Zsmooth1, levels)
Smooth the noisy data with a 5-by-5 kernel, and plot the new countours.
K = 0.045*ones(5); Zsmooth2 = conv2(Znoise,K,'same'); contour(Zsmooth2,levels)