MATLAB ヘルプ センター
このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
2 次元の畳み込み
C = conv2(A,B)
C = conv2(u,v,A)
C = conv2(___,shape)
C = conv2(A,B) は、行列 A と B の 2 次元の畳み込みを返します。
C
A
B
A が行列で B が行ベクトルの場合 (または A が行ベクトルで B が行列の場合)、C は行列の各行とベクトルの畳み込みです。
A が行列で B が列ベクトルの場合 (または A が列ベクトルで B が行列の場合)、C は行列の各列とベクトルの畳み込みです。
例
C = conv2(u,v,A) は、まず A の各列とベクトル u の畳み込みを計算してから、その結果の各行とベクトル v の畳み込みを計算します。この動作は、u または v が行ベクトルか列ベクトルかに関係なく適用されます。
u
v
C = conv2(___,shape) は、shape に従って、畳み込みのサブセクションを返します。たとえば、C = conv2(A,B,"same") は畳み込みの中央部分を A と同じサイズで返します。
shape
C = conv2(A,B,"same")
すべて折りたたむ
イメージ処理などの用途で、畳み込みの入力を出力と直接比較する場合に便利です。関数 conv2 により、出力のサイズを制御できます。
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
Cfull
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 次元データ内でエッジを検出します。
内部の高さが 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))
入力配列。ベクトルまたは行列として指定します。
データ型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical 複素数のサポート: あり
double
single
int8
int16
int32
int64
uint8
uint16
uint32
uint64
logical
2 番目の入力配列。A と畳み込みを行うベクトルまたは行列として指定します。配列 B は A と同じサイズである必要はありません。
入力ベクトル。行ベクトルまたは列ベクトルとして指定します。u と A の各列の畳み込みが計算されます。
2 番目の入力ベクトル。行ベクトルまたは列ベクトルとして指定します。A の列と u の畳み込みを行った各行と、v の畳み込みが計算されます。
"full"
"same"
"valid"
畳み込みのサブセクション。次の値のいずれかとして指定します。
"full" — 完全な 2 次元の畳み込みを返します。
"same" — 畳み込みの中央部分を A と同じサイズで返します。
"valid" — 畳み込みのうち、ゼロが加えられたエッジを含まずに計算された部分のみを返します。
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 列です。
size(A)+size(B)-1
[m,n] = size(A)
p = length(u)
q = length(v)
m+p-1
n+q-1
conv2 の 1 つ以上の入力引数が single 型である場合、出力は single 型になります。それ以外の場合、conv2 は入力を double 型に変換して double 型を返します。
データ型: double | single
2 次元の離散行列 A と B について、次の式は A と B の畳み込みを定義します。
C(j,k)=∑p∑qA(p,q)B(j−p+1,k−q+1)
p と q は、A(p,q) と B(j-p+1,k-q+1) の添字が適正になるすべての値をとります。
この定義を使用して、conv2 は FFT ベースの畳み込みではなく、2 つの行列の直接畳み込みを計算します。
すべて展開する
conv2 関数は tall 配列をサポートしていますが、以下の使用上の注意および制限があります。
shape が "full" (既定) である場合、入力 A および B は空にしてはならず、いずれか 1 つのみを tall 配列にすることができます。
shape が "same" または "valid" である場合は、B を tall 配列にすることはできません。
u および v を tall 配列にすることはできません。
詳細については、tall 配列を参照してください。
backgroundPool
ThreadPool
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
conv2 関数は、GPU 配列を完全にサポートします。GPU 上で関数を実行するには、入力データを gpuArray (Parallel Computing Toolbox) として指定します。詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
gpuArray
使用上の注意および制限:
入力ベクトル u および v が分散配列であってはなりません。
詳細については、分散配列を使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
R2006a より前に導入
conv | convn
conv
convn
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
ヨーロッパ
アジア太平洋地域
最寄りの営業オフィスへのお問い合わせ