Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

conv2

説明

C = conv2(A,B) は、行列 AB2 次元の畳み込みを返します。

C = conv2(u,v,A) は、まず A の各列とベクトル u の畳み込みを計算してから、その結果の各行とベクトル v の畳み込みを計算します。

C = conv2(___,shape) は、shape に従って、畳み込みのサブセクションを返します。たとえば、C = conv2(A,B,'same') は畳み込みの中央部分を A と同じサイズで返します。

すべて折りたたむ

イメージ処理などの用途で、畳み込みの入力を出力と直接比較する場合に便利です。関数 conv2 により、出力のサイズを制御できます。

3 行 3 列の乱数行列 A と 4 行 4 列の乱数行列 B を作成します。AB の完全な畳み込みを計算します。これは 6 行 6 列の行列になります。

A = rand(3);
B = rand(4);
Cfull = conv2(A,B)
Cfull = 6×6

    0.7861    1.2768    1.4581    1.0007    0.2876    0.0099
    1.0024    1.8458    3.0844    2.5151    1.5196    0.2560
    1.0561    1.9824    3.5790    3.9432    2.9708    0.7587
    1.6790    2.0772    3.0052    3.7511    2.7593    1.5129
    0.9902    1.1000    2.4492    1.6082    1.7976    1.2655
    0.1215    0.1469    1.0409    0.5540    0.6941    0.6499

畳み込みの中央部分 Csame を計算します。これは Cfull の部分行列で A と同じサイズであり、CsameCfull(3:5,3:5) と等価です。

Csame = conv2(A,B,'same')
Csame = 3×3

    3.5790    3.9432    2.9708
    3.0052    3.7511    2.7593
    2.4492    1.6082    1.7976

ソーベル エッジ検出演算は、2 次元の畳み込みを使用して、イメージやその他の 2 次元データ内でエッジを検出します。

内部の高さが 1 と等しい 2 次元台座を作成してプロットします。

A = zeros(10);
A(3:7,3:7) = ones(5);
mesh(A)

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

A の行とベクトル u の畳み込みを計算した後に、その結果の行とベクトル v の畳み込みを計算します。この畳み込みによって、台座の水平エッジを抽出します。

u = [1 0 -1]';
v = [1 2 1];
Ch = conv2(u,v,A);
mesh(Ch)

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

台座の垂直エッジを抽出するには、uv の畳み込みの順序を逆にします。

Cv = conv2(v,u,A);
mesh(Cv)

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

台座のエッジを合成したものを計算してプロットします。

figure
mesh(sqrt(Ch.^2 + Cv.^2))

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

入力引数

すべて折りたたむ

入力配列。ベクトルまたは行列として指定します。

データ型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
複素数のサポート: あり

2 番目の入力配列。A と畳み込みを行うベクトルまたは行列として指定します。配列 BA と同じサイズである必要はありません。

データ型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
複素数のサポート: あり

入力ベクトル。行ベクトルまたは列ベクトルとして指定します。uA の各列の畳み込みが計算されます。

データ型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
複素数のサポート: あり

2 番目の入力ベクトル。行ベクトルまたは列ベクトルとして指定します。A の列と u の畳み込みを行った各行と、v の畳み込みが計算されます。

データ型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
複素数のサポート: あり

畳み込みのサブセクション。次の値のいずれかとして指定します。

  • 'full' — 完全な 2 次元の畳み込みを返します。

  • 'same' — 畳み込みの中央部分を A と同じサイズで返します。

  • 'valid' — 畳み込みのうち、ゼロが加えられたエッジを含まずに計算された部分のみを返します。

出力引数

すべて折りたたむ

2 次元の畳み込み。ベクトルまたは行列として返されます。AB が行列である場合、畳み込み C = conv2(A,B) のサイズは size(A)+size(B)-1 です。[m,n] = size(A)p = length(u)q = length(v) である場合、畳み込み C = conv2(u,v,A)m+p-1n+q-1 列です。

conv2 の 1 つ以上の入力引数が single 型である場合、出力は single 型になります。それ以外の場合、conv2 は入力を double 型に変換して double 型を返します。

データ型: double | single

詳細

すべて折りたたむ

2 次元の畳み込み

2 次元の離散変数 A と B について、次の式は A と B の畳み込みを定義します。

C(j,k)=pqA(p,q)B(jp+1,kq+1)

p と q は、A(p,q) と B(j-p+1,k-q+1) の添字が適正になるすべての値をとります。

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。

バージョン履歴

R2006a より前に導入

参考

|