1. 程式人生 > >MATLAB一些函式總結

MATLAB一些函式總結

最近在看卷積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中提供了許多對矩陣操作的函式,可以實現矩陣的三角矩陣的提取(triutril)、矩陣的翻轉(flipudflipdim)和旋轉(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指令。