Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

conv2

二维卷积

说明

示例

C = conv2(A,B) 返回矩阵 AB二维卷积

示例

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 相同。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

Sobel 求边运算利用二维卷积来检测图像的边和其他二维数据。

创建并绘制一个内部高度等于 1 的二维台座。

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
复数支持:

第二个输入数组,指定为要与 A 求卷积的向量或矩阵。数组 B 的大小不是必须与 A 相同。

数据类型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
复数支持:

输入向量,指定为行或列向量。uA 的每一列求卷积。

数据类型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
复数支持:

第二个输入向量,指定为行或列向量。先求 uA 的各列的卷积,然后将卷积结果的每一行与 v 求卷积。

数据类型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
复数支持:

卷积的分段,指定为下列值之一:

  • 'full' - 返回完整的二维卷积。

  • 'same' - 返回卷积中大小与 A 相同的中心部分。

  • 'valid' - 仅返回计算的没有补零边缘的卷积部分。

输出参数

全部折叠

二维卷积,以向量或矩阵形式返回。当 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-1 行和 n+q-1 列。

conv2 的一个或多个输入参数的类型为 single 时,输出的类型为 single。否则,conv2 会将输入转换为类型 double,并返回类型 double

数据类型: double | single

详细信息

全部折叠

二维卷积

对于离散的二维变量 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 之前推出

另请参阅

|