zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Matlab中conv函数的使用

MATLAB 函数 使用
2023-09-11 14:14:48 时间

目录

语法

说明

示例

三维卷积


        convn函数是求N维卷积。

语法

C = convn(A,B)
C = convn(A,B,shape)

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

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

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

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

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

        N 维卷积,以向量、矩阵或多维数组形式返回。如果 A 和 B 的维数相同,则完整卷积 C = convn(A,B) 的大小为 size(A)+size(B)-1。

        当 A 和 B 中有一个或两个都是 single 类型时,输出的类型为 single。否则,convn 会将输入转换为类型 double,并返回类型 double。

N 维卷积

        对于离散的 N 维变量 A 和 B,以下方程定义 A 和 B 的卷积:

        每个 ki 对生成 A 和 B 的合法下标的所有值求和。

说明

C= convn(A,B) 返回数组 A 和 B 的 N 维卷积。

C= convn(A,B,shape) 根据 shape 返回卷积的子区。例如,C = convn(A,B,'same') 返回卷积中大小与 A 相同的中心部分。

示例

三维卷积

        可以控制 convn 函数的输出大小。例如,'same' 选项会删除卷积的外部部分,只返回中心部分,此部分的大小与输入相同。

        求随机 2×3×2 数组 A 与 2×2×2 核 B 的卷积。结果是一个 3×4×3 数组,大小等于 size(A) + size(B) - 1。

A = rand(2,3,2);
B = 0.25*ones(2,2,2);
C = convn(A,B)
C = 
C(:,:,1) =

    0.2037    0.2354    0.1898    0.1581
    0.4301    0.6902    0.4426    0.1825
    0.2264    0.4548    0.2527    0.0244


C(:,:,2) =

    0.2733    0.5444    0.4686    0.1975
    0.6365    1.3772    1.2052    0.4645
    0.3632    0.8327    0.7366    0.2670


C(:,:,3) =

    0.0696    0.3090    0.2788    0.0394
    0.2063    0.6869    0.7627    0.2821
    0.1367    0.3779    0.4839    0.2426

sizeC = size(A) + size(B) - 1
sizeC = 1×3

     3     4     3

        返回卷积的中心部分,大小与A相同。

C = convn(A,B,'same')
C = 
C(:,:,1) =

    1.3772    1.2052    0.4645
    0.8327    0.7366    0.2670


C(:,:,2) =

    0.6869    0.7627    0.2821
    0.3779    0.4839    0.2426