https://www.cnblogs.com/michaelxun/

基础知识复习

 

1、元胞数组

元胞数组是MATLAB中特有的一种数据类型,是数组的一种,其内部元素可以是属于不同的数据类型。

(1)、创建元胞数组   

1、用cell命令创建规格为2*2的空元胞

>> a=cell(2,2)

a =

[] []
[] []

2、用大括号"{}"创建元胞数组并赋值

>> b={'abc',[1,2,3];123,'a'}

b =

'abc'   [1x3 double]
[123]  'a'

(2)、读取元胞数组内容

1、获取指定元胞的大小,用小括号“()”

>> b(1,2)

ans =

[1x3 double]

2、获取指定元胞的内容,用大括号“{}”

>> b{1,2}

ans =

1 2 3

3、进一步获取指定元胞的内容,如b{1,2}为数组,获取该数组指定元素

>> b{1,2}(1,1)

ans =

1

 

2、行向量组

线性代数中,行向量是一个 1×n矩阵,即矩阵由一个含有n个元素的行所组成即行向量。行向量的转置是一个列向量,反之亦然。所有的行向量的集合形成一个向量空间,它是所有列向量集合的对偶空间

3、标准化处理

中心化(又叫零均值化):是指变量减去它的均值。其实就是一个平移的过程,平移后所有数据的中心是(0,0)。

标准化(又叫归一化): 是指数值减去均值,再除以标准差。

 

4、叉积计算

设a=(X1,Y1,Z1),b=(X2,Y2,Z2),
a×b=(Y1Z2-Y2Z1,Z1X2-Z2X1,X1Y2-X2Y1)

5、matlab卷积运算

转 yongbin-H,非常感谢!

(1)conv(向量卷积运算)

所谓两个向量卷积,说白了就是多项式乘法。
比如:p=[1 2 3],q=[1 1]是两个向量,p和q的卷积如下:
把p的元素作为一个多项式的系数,多项式按升幂(或降幂)排列,比如就按升幂吧,写出对应的多项式:1+2x+3x^2;同样的,把q的元素也作为多项式的系数按升幂排列,写出对应的多项式:1+x。

卷积就是“两个多项式相乘取系数”。
(1+2x+3x^2)×(1+x)=1+3x+5x^2+3x^3
所以p和q卷积的结果就是[1 3 5 3]。

记住,当确定是用升幂或是降幂排列后,下面也都要按这个方式排列,否则结果是不对的。
你也可以用matlab试试
p=[1 2 3]
q=[1 1]
conv(p,q)
看看和计算的结果是否相同。


(2)conv2(二维矩阵卷积运算)

a=[1 1 1;1 1 1;1 1 1];
b=[1 1 1;1 1 1;1 1 1];
>> conv2(a,b)

ans =

     1     2     3     2     1
     2     4     6     4     2
     3     6     9     6     3
     2     4     6     4     2
     1     2     3     2     1

>> conv2(a,b,'valid')

ans =

     9

>> conv2(a,b,'same')

ans =

     4     6     4
     6     9     6
     4     6     4

>> conv2(a,b,'full')

ans =

     1     2     3     2     1
     2     4     6     4     2
     3     6     9     6     3
     2     4     6     4     2
     1     2     3     2     1


convn(n维矩阵卷积运算)

 

>> a=ones(5,5,5)

a(:,:,1) =

     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1

a(:,:,2) =

     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1

a(:,:,3) =

     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1

a(:,:,4) =

     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1

a(:,:,5) =

     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1

>> b=ones(5,5,5);

>> convn(a,b,'valid')

ans =

   125

>> convn(a,b,'same')

ans(:,:,1) =

    27    36    45    36    27
    36    48    60    48    36
    45    60    75    60    45
    36    48    60    48    36
    27    36    45    36    27

ans(:,:,2) =

    36    48    60    48    36
    48    64    80    64    48
    60    80   100    80    60
    48    64    80    64    48
    36    48    60    48    36

ans(:,:,3) =

    45    60    75    60    45
    60    80   100    80    60
    75   100   125   100    75
    60    80   100    80    60
    45    60    75    60    45

2

 

1.full

 

如下图:

 

 

                                  图(1)

 

 图中蓝色为原图像,白色为对应卷积所增加的padding,通常全部为0,绿色是卷积后图片。图的卷积的滑动是从卷积核右下角与图片左上角重叠开始进行卷积,滑动步长为1,卷积核的中心元素对应卷积后图像的像素点。

 

2.same

 

如下图:

 

 

                                                               图(2)

 

卷积的时候需要对卷积核进行180的旋转,同时卷积核中心与需计算的图像像素对齐,输出结构为中心对齐像素的一个新的像素值

 

3. valid

 

如下图:

 

 

                                                           图(3)

 

太简单,不解释。

 

 

 

 

 

最后,我们可以总结出full,same,valid三种卷积后图像大小的计算公式:

 

1.full: 滑动步长为1,图片大小为N1xN1,卷积核大小为N2xN2,卷积后图像大小:N1+N2-1 x N1+N2-1

 

如图1, 滑动步长为1,图片大小为2x2,卷积核大小为3x3,卷积后图像大小:4x4

 

2.same: 滑动步长为1,图片大小为N1xN1,卷积核大小为N2xN2,卷积后图像大小:N1xN1

 

3.valid:滑动步长为S,图片大小为N1xN1,卷积核大小为N2xN2,卷积后图像大小:(N1-N2)/S+1 x (N1-N2)/S+1

 

如图2,滑动步长为1,图片大小为5x5,卷积核大小为3x3,卷积后图像大小:3x3
 
3
MATLAB的conv2函数实现步骤(conv2(A,B)):

其中,矩阵A和B的尺寸分别为ma*na即mb*nb

① 对矩阵A补零,第一行之前和最后一行之后都补mb-1行,第一列之前和最后一列之后都补nb-1列(注意conv2不支持其他的边界补充选项,函数内部对输入总是补零);

② 将卷积核绕其中心旋转180度;

③ 滑动旋转后的卷积核,将卷积核的中心位于图像矩阵的每一个元素,并求乘积和(即将旋转后的卷积核在A上进行滑动,然后对应位置相乘,最后相加);下面分别是shape=full, same, valid时取输出图像大小的情况,其中:位置1表示输出图像的值从当前核的计算值开始(对应输出图像左上角),位置2表示到该位置结束(对应输出图像右下角)

 

 

MATLAB卷积运算(conv、conv2、convn)解释

posted @ 2020-04-12 13:50  吴实一  阅读(195)  评论(0编辑  收藏  举报
https://www.cnblogs.com/michaelxun/