コンボリューションと相互相関
• convolve(S, K, [BC], [OV]) - 任意位相で 2 つのベクトル間のコンボリューション (1D) または 2 つの行列間のコンボリューション (2D) を実行します。
時間でのコンボリューションは周波数での乗算に相当し、周波数でのコンボリューションは時間での乗算に相当し、これはデジタルフィルタで便利です。
• crosscorr(S, K, [BC], [OV]) - 任意位相で 2 つのベクトル間の相互相関解析 (1D 相関) または 2 つの行列間の相互相関解析 (2D 相関) を実行します。
相関は一方の時系列を逆順にしたコンボリューションに相当し、系のインパルス応答を求める場合によく使用されます。
crosscorr 関数を使用して画像を相関できます。
crosscorr 関数は廃止された関数 correl と correl2d の機能を兼ね備えています。
引数
• S は入力信号を表すベクトルまたは行列です。配列の要素は実数または複素数です。
• K はカーネルを表すベクトルまたは行列です。配列の要素は実数または複素数です。
• BC (オプション) は、相関中の行列の境界の処理方法を指定することで実行するコンボリューションのタイプを指定する整数の引数です。 BC は 0 (デフォルト)、1、2、3 のいずれかに設定できます。ここで、
◦ 0: 線形 (ゼロパディング) - 行列の外側のピクセルはゼロとして扱われます。
◦ 1: 循環 (周期折り返し) - 行列の外側のピクセルは行列の周期的継続として扱われます。
◦ 2: 反射 - 行列の外側のピクセルは行列の境界に沿ってミラーによって反射しているかのように扱われます。
◦ 3: 継続 - 行列の外側のピクセルは行列内の最後の値が続いているものとして扱われます。
• OV (オプション) は、2 つ目の信号のシフトを適用するかどうかを指定する整数値または 2 つの整数値のベクトルです。これは、カーネル行列 K と入力信号行列 S との最初の行と列の重なり (位相相関) を指定するときに使用されます。ベクトルの 1 つ目の成分は行の重なりを指定し、2 つ目の成分は列の重なりを指定します。
重なりの最小値は 1 以上、重なりの最大値はカーネルサイズ以下でなければなりません。
ゼロ位相の相関では、カーネルを奇数サイズの行列であるとしたときに、カーネルの原点がカーネルの中心になるように重なりを定義する必要があります。この場合、2 つの重なり合うパラメータが、それぞれカーネルの行数または列数からその半分を引いた値に設定されます。
1 次元の相互相関では、行の重なりは 1 に設定されます。
2 次元の相互相関では、デフォルトの重なりは次のように設定されます。
Row_overlap = K_rows − K_rows/2
Column_overlap = K_columns − K_columns/2