您的位置:首页 > 编程语言 > MATLAB

Matlab需要掌握重要函数及基本技能

2015-12-20 12:06 459 查看
之前没有matlab编程经验,而在最近的项目中由于需要用到,所以恶补。在研究深度学习时遇到基于Caffe的CNN 源码许多都是基于matlab接口写的,比如RCNN, SPPNET, FAST RCNN,FASTER RCNN。其中遇到最多的要数如下几个函数。

1> bsxfun(@operation, A, B)型函数

operation:plus,minus,times等;A,B是矩阵。究竟该函数干的什么事情?

原来bsxfun()是为了解决矩阵维度不一样的运算,A(3x3),B(1x3),根据矩阵的乘法规则二者不能直接做乘法。

>> a=[1,2,3;4,5,6;7,8,9]

a =

1 2 3

4 5 6

7 8 9

>> b=[1,2,3]

b =

1 2 3

>> a*b

Error using *

Inner matrix dimensions must agree.

如果想乘呢?

>> bsxfun(@times,a,b)

ans =

1 4 9

4 10 18

7 16 27

相当于c=repmat(b,3,1)

ans =

1 2 3

1 2 3

1 2 3

然后a*c.

但是细节上不同于上述分析,因为repmat是深拷贝b矩阵,而直接用bxsfun()则相当于浅拷贝,这样效率提高很多。

2> arrayfun(@function ,A , , , )型函数

其中,function是函数句柄。该函数主要干什么?

对A矩阵中的每一个元素都进行function的操作。

eg1.

>> s=[1 2;3 4];

>> f=@(x) x^2;

>> arrayfun(f,s) %此时s是一个矩阵,对矩阵中每一个元素都进行平方操作

ans =

1 4

9 16

eg2.

>> a=[1 2;3 4]

>> b=[4 5;6 7]

>> f=@(x) x^2;

>> arrayfun(f,a,b) %此时s是一个矩阵,对矩阵中每一个元素都进行平方操作

ans =

1 4

9 16
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: