MATLAB 帮助中心
二维卷积
C = conv2(A,B)
C = conv2(u,v,A)
C = conv2(___,shape)
C = conv2(A,B) 返回矩阵 A 和 B 的二维卷积。
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
索贝尔求边运算利用二维卷积来检测图像的边和其他二维数据。
创建并绘制一个内部高度等于 1 的二维台座。
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
第二个输入数组,指定为要与 A 求卷积的向量或矩阵。数组 B 的大小不是必须与 A 相同。
输入向量,指定为行或列向量。u 与 A 的每一列求卷积。
第二个输入向量,指定为行或列向量。先求 u 与 A 的各列的卷积,然后将卷积结果的每一行与 v 求卷积。
"full"
"same"
"valid"
卷积的分段,指定为下列值之一:
"full" - 返回完整的二维卷积。
"same" - 返回卷积中大小与 A 相同的中心部分。
"valid" - 仅返回计算的没有补零边缘的卷积部分。
二维卷积,以向量或矩阵形式返回。当 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 的一个或多个输入参量的类型为 single 时,输出的类型为 single。否则,conv2 会将输入转换为类型 double,并返回类型 double。
数据类型: double | single
对于离散的二维矩阵 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 的卷积。
全部展开
conv2 函数支持 tall 数组,但存在以下使用说明和限制:
如果 shape 是 "full"(默认值),则输入 A 和 B 不能为空,且其中只有一个可以是 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.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
欧洲
亚太
联系您当地的办事处