Matlab 卷积函数 ——conv2

功能:是二维卷积运算函数(与convmtx2相似)。如果a和b是两个离散变量n1和n2的函数,则关于a和b的二维卷积运算数学公式如下:



用法:C = conv2(A,B)
C = conv2(hcol,hrow,A)
C = conv2(...,'shape')
C = conv2(A,B)计算数组A和B的卷积。如果一个数组描述了一个二维FIR滤波器,则另一个数组被二维滤波。当A的大小为[ma,na],B的大小为[mb,nb]时,C的大小为[ma+mb-1,mb+nb-1]。‘shape’见下表
参数
含义
‘full’
默认值,返回全部二维卷积值。
‘same’
返回与A大小相同卷积值的中间部分
‘valid’
当all(size(A)>=size(B)),C的大小为[ma+mb-1,mb+nb-1];否则,C返回[]。在n维卷积运算中,C的大小为max(size(A)- size(B)+1,0)


例子:


s = [1 2 1; 0 0 0; -1 -2 -1];


A = zeros(10);


A(3:7,3:7) = ones(5);


H = conv2(A,s);


mesh(H)


Matlab的帮助:

conv2

2-D convolution

Syntax

C = conv2(A,B)
C = conv2(hcol,hrow,A)
C = conv2(...,'shape')

Description

C = conv2(A,B) computes the two-dimensional convolution of matrices A and B. If one of these matrices describes a two-dimensional finite impulse response (FIR) filter, the other matrix is filtered in two dimensions.

The size of C in each dimension is equal to the sum of the corresponding dimensions of the input matrices, minus one. That is, if the size of A is [ma,na] and the size of B is [mb,nb], then the size of C is [ma+mb-1,na+nb-1].

The indices of the center element of B are defined as floor(([mb nb]+1)/2).

C = conv2(hcol,hrow,A) convolves A first with the vector hcol along the rows and then with the vector hrow along the columns. If hcol is a column vector and hrow is a row vector, this case is the same as C = conv2(hcol*hrow,A).

C = conv2(...,'shape') returns a subsection of the two-dimensional convolution, as specified by the shape parameter:

full

Returns the full two-dimensional convolution (default).

same

Returns the central part of the convolution of the same size as A.

valid

Returns only those parts of the convolution that are computed without the zero-padded edges. Using this option, C has size [ma-mb+1,na-nb+1] when all(size(A) >= size(B)). Otherwise conv2 returns [].

Note   If any of A, B, hcol, and hrow are empty, then C is an empty matrix [].

Algorithm

conv2 uses a straightforward formal implementation of the two-dimensional convolution equation in spatial form. If and are functions of two discrete variables, and , then the formula for the two-dimensional convolution of and is

In practice however, conv2 computes the convolution for finite intervals.

Note that matrix indices in MATLAB always start at 1 rather than 0. Therefore, matrix elements A(1,1), B(1,1), and C(1,1) correspond to mathematical quantities a (0,0), b (0,0), and c (0,0).

Examples

Example 1

For the 'same' case, conv2 returns the central part of the convolution. If there are an odd number of rows or columns, the "center" leaves one more at the beginning than the end.

This example first computes the convolution of A using the default ('full') shape, then computes the convolution using the 'same' shape. Note that the array returned using 'same' corresponds to the underlined elements of the array returned using the default shape.

A = rand(3);
B = rand(4);
C = conv2(A,B); % C is 6-by-6

C =     0.1838  0.2374  0.9727  1.2644  0.7890  0.3750     0.6929  1.2019  1.5499  2.1733  1.3325  0.3096     0.5627  1.5150    1.0602     0.9986  2.3811    0.8462     0.3089  1.1419    0.6841     0.3287  0.9347  1.6464  1.7928  1.2422  0.5423    Cs = conv2(A,B,'same')   % Cs is the same size as A: 3-by-3  Cs =     2.3576  3.1553  2.5373     3.4302  3.5128  2.4489     1.8229  2.1561  1.6364


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值