MATLAB一些函数总结

来源:互联网 发布:网络大电影平台有哪些 编辑:程序博客网 时间:2024/05/18 17:00

最近在看卷积RBM的相关知识,主要在研究Honglak Lee的文章:Convolutional deep belief networks for scalable unsupervised learning of hierarchical representations. 看了Honglak Lee的代码[论文及代码见这里]后,深感大牛的功力深厚,从大牛的代码中学习了很多细节,在这里做一些简单的总结:
1、squeeze :除去size为1的维度
描述:B=squeeze(A),B与A有相同的元素,但所有只有一行或一列的维度(a singleton dimension)被去除掉了。

 a=rand(4,3,1);%产生一个均匀分布的阵列,共3页,每页4行1列 b=squeeze(a)  %经过squeeze后,结果如下

b =
0.9294 0.5177 0.3816
0.3806 0.5661 0.3082
0.4571 0.0626 0.0101
0.7965 0.0328 0.1839

2、randsample,该函数的总结见上一篇博客

3、fliplr 左右翻转矩阵
描述:B = fliplr(A)
将矩阵A的列绕垂直轴进行左右翻转 matabc
如果A是一个行向量,fliplr(A)将A中元素的顺序进行翻转。
如果A是一个列向量,fliplr(A)还等于A。

a=[1 2 3 4 5;4 5 6 7 8] %生成一个25列的矩阵b=fliplr(a)             %对a进行左右对称翻转

结果如下:
a =

 1     2     3     4     5 4     5     6     7     8  

b =

 5     4     3     2     1 8     7     6     5     4

补充:matlab中提供了许多对矩阵操作的函数,可以实现矩阵的三角矩阵的提取(triu、tril)、矩阵的翻转(flipud、flipdim)和旋转(rot90)等各种操作。

4、imresize该函数用于对图像做缩放处理
调用格式 :

(1)B = imresize(A, m)
返回的图像B的长宽是图像A的长宽的m倍,即缩放图像。 m大于1, 则放大图像; m小于1, 缩小图像。
(2)B = imresize(A, [numrows numcols])
numrows和numcols分别指定目标图像的高度和宽度。 显而易见, 由于这种格式允许图像缩放后长宽比例和源图像长宽比例不相同,因此所产生的图像有可能发生畸变。
[Y newmap] = imresize(X, map, scale)
[…] = imresize(…, method)
method参数用于指定在改变图像尺寸时所使用的算法, 可以为以下几种:
‘nearest’: 这个参数也是默认的, 即改变图像尺寸时采用最近邻插值算法;
‘bilinear’:采用双线性插值算法;
‘bicubic’: 采用双三次插值算法.

5、conv2 进行卷积运算
C=conv2(A,B,shape); %卷积滤波
解释如下:
A:输入图像,B:卷积核
假设输入图像A大小为ma x na,卷积核B大小为mb x nb,则
(1)当shape=full时,返回全部二维卷积结果,即返回C的大小x(na+nb-1
(2)shape=same时,返回与A同样大小的卷积中心部分;
(3)shape=valid时,不考虑边界补零,即只要有边界补出的零参与运算的都舍去,返回C的大小为(ma-mb+1)x(na-nb+1).

6、fileparts在FreeMat、Matlab中,该函数用于将一个文件的完整路径中各部分提取出来。
语法格式:
[pathstr, name, ext] = fileparts(filename)
其中filename是要解析的文件的完整路径,例如:E:\games\IGI\bin\IGI.exe。fileparts将这个文件名(包含完整路径信息)各部分分别提取到四个变量中。
其中pathstr是这个文件的路径名,name是文件名,ext是包含一个点号文件的扩展名(指定了文件的类型)。
举例:

 filename ='E:\学习资料\Honglak Lee Papers code'; [pathstr, name, ext] = fileparts(filename)

结果如下:
pathstr =E:\学习资料
name =Honglak Lee Papers code
ext =”

7、save 保存变量
用法:save example A 表示将A存为example.mat保存在变量空间中。
保存到某个目录下:save(‘Dictionary\example.mat’,’A’) Dictionary是指某个目录。

以上的总结不一定全面,如果没有写全的地方可以采用MATLAB查询的工具help指令。

参考资料:
【1】Matlab conv2 和filter2的区别
【2】Matlab矩阵基本操作(定义、运算)
【3】Matlab命令系列之目录操作
【4】Matlab中save,load使用方法

0 0