www.gusucode.com > graphics 案例源码程序 matlab代码 > graphics/SmoothAMatrixForContourPlotExample.m

    %% Smooth Data with Convolution
% 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)

%%
% The <docid:matlab_ref.f80-999541> function in MATLAB(R) 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)