Main Content

畳み込みによるデータの平滑化

畳み込みを使用することで、高周波成分を含んだ 2 次元データを平滑化できます。

関数 peaks を使用して 2 次元データを作成し、いくつかの等高線レベルにデータをプロットします。

Z = peaks(100);
levels = -7:1:10;
contour(Z,levels)

Figure contains an axes object. The axes object contains an object of type contour.

データにランダムなノイズを挿入し、ノイズを含む等高線をプロットします。

Znoise = Z + rand(100) - 0.5;
contour(Znoise,levels)

Figure contains an axes object. The axes object contains an object of type contour.

MATLAB® の関数conv2は、指定されたカーネルによって 2 次元データを畳み込みます。カーネルの要素は、元のデータの特徴を削減または強調する方法を定義します。カーネルは、入力データと同じサイズである必要はありません。数個の周波数成分のみを含むデータを平滑化するには、小さいサイズのカーネルで十分な場合があります。カーネルのサイズが大きいほど、周波数応答の調整精度を高くすることができ、より滑らかな出力が得られます。

3 行 3 列のカーネル K を定義し、conv2 を使用して、Znoise のノイズを含むデータを平滑化します。平滑化された等高線をプロットします。conv2'same' オプションによって、出力が入力と同じサイズになります。

K = (1/9)*ones(3);
Zsmooth1 = conv2(Znoise,K,'same');
contour(Zsmooth1, levels)

Figure contains an axes object. The axes object contains an object of type contour.

5 行 5 列のカーネルを使用してノイズを含むデータを平滑化し、新しい等高線をプロットします。

K = (1/25)*ones(5);
Zsmooth2 = conv2(Znoise,K,'same');
contour(Zsmooth2,levels)

Figure contains an axes object. The axes object contains an object of type contour.

参考

| | |

関連するトピック