【MATLAB】MATLAB的資料型別和函式說明
1.MATLAB的資料型別
如下圖所示,MATLAB可以支援15種基本的資料型別,從型別上包括整形(int/uint)、浮點型(single/double)、字元型(char)、邏輯型(logical)、元胞陣列(cell)、結構陣列(struct)以及函式控制代碼(function_handle)等。可以將上述型別歸納為基本的資料結構:int、double、char以及高階資料結構(容器,container),即cell和struct.下面簡要介紹一下:
-
整形:整形分為有符號整形(int)和無符號整形(uint),同時根據儲存時佔用的位元組數又可以分成8位、16位、32位和64位。 通常用MATALB讀取圖片時,系統預設儲存格式為int8。
-
浮點型:浮點型分為單精度(single)和雙精度(double),單精度儲存需要32位(4個位元組),雙精度儲存需要64位(8個位元組)。預設情況下,MATLAB將所有的數值儲存為雙精度浮點型。
-
字元型:通常用於表示程式碼中需要讀寫的字元或者字串,以字元陣列的形式進行儲存。
-
邏輯型:通常用於判斷一段語句是否正確,如下就是一個判斷語句,因為a>1不成立,所以輸出的b=0
a=0; b=(a>1)
-
結構陣列:結構陣列可以包含多種不同的資料型別,如我們要記錄名字、年齡、性別,那麼就可以通過定義統一的結構陣列Infomation來記錄。如下:
Infomation.name='LIM' Infomation.gender='man' Infomation.age=23 %輸出 >>whos Infomation Name Size Bytes Class Attributes Infomation 1x1 548 struct
-
元胞陣列:元胞陣列也可以儲存不同型別的資料,同時它還可以通過索引的形式對儲存的資料進行訪問。元胞陣列定義時用大括號{}(也還有其他的方法定義,此處不再詳述),如下:
Information={'LIM','man',23} %輸出 >>whos Information Name Size Bytes Class Attributes Information 1x3 356 cell >> Information(1)%索引 ans = 'LIM' %還可以用如下的方式來定義 a{1,1}=[1,2,4;3,4,5;3,6,7;8,9,0]; a{1,2}='Testing string'; a{2,1}=5657; a{2,2}=[];%空的 %看看元胞陣列a的內容怎麼樣 >>a a = [4x3 double] 'Testing string' [ 5657] [] % 索引時有如下的區別,小括號索引只顯示大小,大括號索引顯示具體資料 >> a(1,1) ans = [4x3 double] >> a{1,1} ans = 1 2 4 3 4 5 3 6 7 8 9 0
-
函式控制代碼:函式控制代碼通常用於間接呼叫一個函式的取值或者是資料型別。通常用於作圖過程中對圖片不同的屬性進行操作。圖形視窗中的線條、曲面等都是圖形物件,而這些圖形物件可以通過一個被稱為“控制代碼值”的東西加以控制,如畫出一條直線,可以通過控制代碼值修改線條的顏色,寬度等等。而所謂的控制代碼值就是一個數值,每個圖形物件都對應這唯一的控制代碼值。
%如下,可以通過直接輸入h,就可以得到這個線條的屬性了 h=line([0,1],[0,1]) >> h %如果想要完全顯示所有屬性,可以用get(h) h = Line (具有屬性): Color: [0 0.4470 0.7410] LineStyle: ':' LineWidth: 2 Marker: 'none' MarkerSize: 6 MarkerFaceColor: 'none' XData: [0 1] YData: [0 1] ZData: [1x0 double] %則可以通過如下的形式修改控制代碼值(屬性) h.LineWidth=2
補充(高維矩陣的說明):
MATLAB中的多維矩陣,就是在定義二維矩陣時再新增一個維度,也即定義在了不同的頁面上(就這樣理解),所以索引時除了與二維的相同外,還要再加一個頁數索引。
2.MATLAB的函式
matlab除了用function[]=funname()自定義的永久性函式外,還有一些臨時性函式。
-
永久性函式:由函式檔案形式建立的自定義函式
function[output1,output2,...]=FunName(input1,input2,...) %函式體
-
臨時性函式:臨時性函式通常用於建立需要臨時使用的簡單的函式。臨時性函式包括行內函數(inline function)和匿名函式(anonymous function),它們既可以再編輯器中編輯,也可以在命令視窗中編輯。而匿名函式的效率優於行內函數,故建議使用匿名函式。
%行內函數 由inline函式建立,格式如下: FunName=inline('expression','arg1','arg2',...)%可以通過函式名呼叫,expression是函式的表示式,arg1等%是輸入的變數,例如: f=inline('x^2+y^2','x','y'); >> f(3,4) ans = 25 >> whos f Name Size Bytes Class Attributes f 1x1 1190 inline %------------------------------------------------------------------------------------ % 匿名函式 匿名函式通過“@”表示函式指標(或稱函式控制代碼),格式如下: FunName=@(arg1,arg2,...)expression %同上 ff=@(x,y)x^2+y^2; >> ff(3,4) ans = 25 >> whos ff Name Size Bytes Class Attributes ff 1x1 32 function_handle