使用卷积对数据进行平滑处理
您可以使用卷积对包含高频分量的二维数据进行平滑处理。
使用 peaks
函数创建二维数据,并在各个等高线层级对数据绘图。
Z = peaks(100); levels = -7:1:10; contour(Z,levels)
向数据中插入随机噪声并绘制含噪等高线。
Znoise = Z + rand(100) - 0.5; contour(Znoise,levels)
MATLAB® 中的 conv2
函数使用指定的核求二维数据的卷积,该核的元素定义如何去除或增强原始数据的特征。核的大小不必与输入数据相同。小核足以对仅包含少数频率分量的数据进行平滑处理。较大的核可以更精确地对频率响应进行调整,从而得到更平滑的输出。
定义一个 3×3 核 K
并使用 conv2
对 Znoise
中的含噪数据进行平滑处理。绘制经过平滑处理的等高线。conv2
中的 'same'
选项使输出的大小与输入相同。
K = (1/9)*ones(3);
Zsmooth1 = conv2(Znoise,K,'same');
contour(Zsmooth1, levels)
用 5×5 核对含噪数据进行平滑处理,并绘制新等高线。
K = (1/25)*ones(5);
Zsmooth2 = conv2(Znoise,K,'same');
contour(Zsmooth2,levels)
另请参阅
conv2
| conv
| filter
| smoothdata