このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
conv2
2 次元の畳み込み
説明
例
2 次元の畳み込み
イメージ処理などの用途で、畳み込みの入力を出力と直接比較する場合に便利です。関数 conv2
により、出力のサイズを制御できます。
3 行 3 列の乱数行列 A
と 4 行 4 列の乱数行列 B
を作成します。A
と B
の完全な畳み込みを計算します。これは 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
と同じサイズであり、Csame
は Cfull(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 次元の畳み込みを使用して、イメージやその他の 2 次元データ内でエッジを検出します。
内部の高さが 1 と等しい 2 次元台座を作成してプロットします。
A = zeros(10); A(3:7,3:7) = ones(5); mesh(A)
A
の行とベクトル u
の畳み込みを計算した後に、その結果の行とベクトル v
の畳み込みを計算します。この畳み込みによって、台座の水平エッジを抽出します。
u = [1 0 -1]'; v = [1 2 1]; Ch = conv2(u,v,A); mesh(Ch)
台座の垂直エッジを抽出するには、u
と v
の畳み込みの順序を逆にします。
Cv = conv2(v,u,A); mesh(Cv)
台座のエッジを合成したものを計算してプロットします。
figure mesh(sqrt(Ch.^2 + Cv.^2))
入力引数
A
— 入力配列
ベクトル | 行列
入力配列。ベクトルまたは行列として指定します。
データ型: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
複素数のサポート: あり
B
— 2 番目の入力配列
ベクトル | 行列
2 番目の入力配列。A
と畳み込みを行うベクトルまたは行列として指定します。配列 B
は A
と同じサイズである必要はありません。
データ型: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
複素数のサポート: あり
u
— 入力ベクトル
行ベクトルまたは列ベクトル
入力ベクトル。行ベクトルまたは列ベクトルとして指定します。u
と A
の各列の畳み込みが計算されます。
データ型: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
複素数のサポート: あり
v
— 2 番目の入力ベクトル
行ベクトルまたは列ベクトル
2 番目の入力ベクトル。行ベクトルまたは列ベクトルとして指定します。A
の列と u
の畳み込みを行った各行と、v
の畳み込みが計算されます。
データ型: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
複素数のサポート: あり
shape
— 畳み込みのサブセクション
"full"
(既定値) | "same"
| "valid"
畳み込みのサブセクション。次の値のいずれかとして指定します。
"full"
— 完全な 2 次元の畳み込みを返します。"same"
— 畳み込みの中央部分をA
と同じサイズで返します。"valid"
— 畳み込みのうち、ゼロが加えられたエッジを含まずに計算された部分のみを返します。
出力引数
C
— 2 次元の畳み込み
ベクトル | 行列
2 次元の畳み込み。ベクトルまたは行列として返されます。A
と B
が行列である場合、畳み込み 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-1
行 n+q-1
列です。
conv2
の 1 つ以上の入力引数が single
型である場合、出力は single
型になります。それ以外の場合、conv2
は入力を double
型に変換して double
型を返します。
データ型: double
| single
詳細
2 次元の畳み込み
2 次元の離散行列 A と B について、次の式は A と B の畳み込みを定義します。
p と q は、A(p,q) と B(j-p+1,k-q+1) の添字が適正になるすべての値をとります。
この定義を使用して、conv2
は FFT ベースの畳み込みではなく、2 つの行列の直接畳み込みを計算します。
拡張機能
tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。
使用上の注意事項および制限事項:
shape
が"full"
(既定) である場合、入力A
およびB
は空にしてはならず、いずれか 1 つのみを tall 配列にすることができます。shape
が"same"
または"valid"
である場合は、B
を tall 配列にすることはできません。u
およびv
を tall 配列にすることはできません。
詳細については、tall 配列を参照してください。
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
この関数は GPU 配列を完全にサポートしています。詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
分散配列
Parallel Computing Toolbox™ を使用して、クラスターの結合メモリ上で大きなアレイを分割します。
使用上の注意事項および制限事項:
入力ベクトル
u
およびv
が分散配列であってはなりません。
詳細については、分散配列を使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2006a より前に導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)