matlab卷积计算时,一般有conv2,filter2等函数,先构造两个矩阵,
A = randn(4);
h = rand(3);
各个函数的用法如下:
filter
C = conv2(b , a , data)
利用卷积核b对data做卷积,得到的结果除以a就是函数返回的值
data = 1:4;
ws = 3;
ss = filter(ones(1,ws)/ws , 1 , data)
ss = filter(ones(1,ws)/ws , 2 , data)
conv2
C = conv2(A , h , shape)
用h对A做卷积,h先旋转180度之后会与A中的每个块做点乘,shape表示返回矩阵的大小,如果
- full:返回的矩阵大小是size(A)+size(h)-1
- same:返回的矩阵大小是size(A)
- valid:返回在卷积时没有遇到零边的矩阵
C = conv2(A , h)相当于shape是’full’的情形
filter2
C = filter2(h , a , shape)
上式与C = conv2(A , rot90(rot90(h)) , shape)
是一样的
默认的shape是same,即返回矩阵大小是size(A)
只能做二维图像滤波
imfilter
C = imfilter(A , h , shape)
图像是与filter2效果相同
可以做多维图像滤波,如RGB通道的图像等
convn
C = convn(A , h , shape)
二维图像时,效果与conv2相同
convn可以处理多维图像,如RGB三个通道的图像等
不知道起什么结束语的标题才好
更多的功能见matlab的help