MATLAB中的基礎數據類型主要包括數值類型、字符串、結構、單元數組和函數句柄等數據類型。本文主要介紹這些基礎數據類型及其相關的基礎操作。
一、數值類型
數值類型按數值在計算機中存儲與表達的基本方式進行分類,主要有整數、單精度浮點數和雙精度浮點數三類,如表所示。在默認情況下,MATLAB對所有數值按照雙精度浮點數類型進行存儲和操作。
數據格式
示例
說明
Int8,uint8
Int16,uint16
Int32,uint32
Int64,uint64
輸入:
Int16(2^15)
得到::
ans=32767
分別表示有符號和無符號的整數類型:相同數值的整數類型佔用的內存更少
single
single(0.1)
單精度浮點類型
double
6.732、1.562-0.425i
雙精度浮點型,默認數據類型
相對於雙精度浮點數類型數據,整數型與單精度浮點型數據的優點在於節省變量佔用的內存空間:要在滿足精度要求的情況下,可以考慮優先採用。需要時,可以指定系統按照整數型或單精度浮點型對指定的數字或數組進行存儲、運算等操作。
1. 整數類型
MATLAB中提供了4種有符號和4種無符號整數類型;有符號整數類型可表示正整數、負整數和零,而無符號整數類型僅能表示正整數和零。這8種類型的存儲佔用位數、能表示的數值範圍和轉換函數均不同,在此不作贅述。
由於MATLAB中數值默認存儲類型是雙精度浮點型,因此將變量設置成整數類型時,需眼使用轉變函數。如下表:
函數
運算法則
示例
floor
向下取整
floor(1.4)=1
floor(3.5)=3
floor(-2.3)=-3
Ceil
向上取整
ceil(1.4)=2
ceil(3.5)=4
ceil(-2.3)=-2
round
取最接近的整數;如果小數部分是0.5,則向絕對值大的方向取整
round(1.4)=1
round(3.5)=4
round(-2.3)=-2
Fix
向0取整
fix(1.4)=1
fix(3.5)=3
fix(-2.3)=-2
2. 浮點數類型
MATLAB中提供了單精度浮點整數類型和雙精度浮點類型,其存儲位寬、能夠表示的數值範圍、數值精度各方面均不同,見下表
類型
位寬
數位意義
數值範圍
轉換函數
單精度
32
31位表示符號(0正1負)
30~23位表示指數部分
22~0位表示小數部分
-3.40282e+038~-1.17549e-038
Single
雙精度
64
63位表示符號(0正1負)
62~52位表示指數部分
51~0位表示小數部分
-1.79769e+038~-2.22507e-038
與
2.22507e-038~1.79769e+038
double
MATLAB中的默認數值類型為雙精度浮點類型,但可以通過轉換函數來創建單精度浮點類型。
3. 複數
複數由實部和虛部兩部分構成。在MATLAB中,字符i或j默認作為虛部標誌。創建複數時,可以直接按照複數形式進行輸入或利用complex函數。
關於複數的函數如下表:
函數
說明
函數
說明
complex(a,b)
構造以a為實部,b為虛部的複數
i,j
real(z)
返回複數z的實部
imag(z)
返回複數z的虛部
abs(z)
返回複數z的模
angle(z)
返回複數z的福角
conj(z)
返回複數z的共軛複數
例:複數基本操作實例。
輸入:
輸出:
1. 無窮量(Inf)和非數值量(NaN)
MATLAB中使用Inf和-Inf分別代表正無窮量和負無窮量,NaN表示非數值量。正負無 窮量的產生一般由 於運算溢出產生,非數值量則是由於類似0/0或Inf/Inf類型的非正常運算
MATLAB提供Inf 函數和NaN函數來創建指定數值類型的無窮量和非數值量,生成結果默認為雙精度浮點類型中還有一種特殊的指數類型的數據叫做非數,通常表示運算得到的數值結果超出了運算範圍。非數的實部用NaN表示,虛部用InF表示。
例:無窮量及非數值量的產生和性質。
輸入:
輸出結果如下:
一、字符與字符串
MATLAB將文本作為特徵字符串或簡單地當作字符串。這些字符串能夠顯示在屏幕上, 也可以用來構成一些命令。字符串是存儲在行向量中的文本,這行向量中的每一個元素代表
實際上,元素中存放的是字符的內部代碼,即ASCII碼。但在屏幕上顯示字符變量的值時,顯示出來的是文本,而不是ASCII編碼:這是因為在顯示前已經對ASCII編碼進行了輸
字符串一般是ASCII值的數值數組,它作為字符串表達式進行顯示。字符串可以通過其 下標對其中的任一元素進行訪問, 也可以通過矩陣下標索引進行訪問,但是矩陣的每行字符數必須相同。
例:字符串屬性示例。
輸入:
輸出:
二、函數句柄
在MATLAB中,可以實現對函數的間接調用;這歸功於函數句柄提供了一種間接調用函數的方法。
創建函數句柄需要使用到操作符@,對MATLAB庫函數中提供的各種M文件中的函數和使用者自主編寫的程序中的內部函數,也都可以創建函數句柄,進而可以通過函數句柄來實現對這些函數的間接調用。
創建函數句柄的一般句法格式為:
Function_Handle=@Function_Filename;
其中,
Function_Filename是函數所對應的M文件的名稱或MATLAB內部函數的名稱;
@是句柄創建操作符;
Function_Handle變量保存了這一句柄,並在後續的運算中作為數據流進行傳遞。
例:函數句柄的創建與調用。
輸入:
輸出:
MATLAB庫函數提供了大量處理函數句柄的操作函數,將函數句柄的功能與其他數據類型聯繫起來;這擴展了函數句柄的應用。函數句柄的簡單操作函數見下表:
函數名稱
函數功能
function_handle或@
間接調用函數
func2str
將函數句柄轉換為函數名稱字符串
str2func
將字符串代表的函數轉換為函數句柄
function(funhandle)
返回一個存儲函數名稱、函數類型及函數M文件位置的結構體