Matlab資料型別


MATLAB不需要任何型別宣告或維度語句。當MATLAB遇到新的變數名稱時,它將建立變數並分配適當的記憶體空間。

如果變數已經存在,則MATLAB將使用新內容替換原始內容,並在必要時分配新的儲存空間。

例如,

total = 136;

上述語句建立一個名為total1x1矩陣,並將值136儲存在其中。

MATLAB資料型別

MATLAB提供15種基本資料型別。每種資料型別儲存矩陣或陣列形式的資料。矩陣或陣列的最小值是00,並且是可以到任何大小的矩陣或陣列。

下表顯示了MATLAB中最常用的資料型別 -

資料型別 描述
int8 8位有符號整數
uint8 8位無符號整數
int16 16位有符號整數
uint16 16位無符號整數
int32 32位有符號整數
uint32 32位無符號整數
int64 64位有符號整數
uint64 64位無符號整數
single 單精度數值資料
double 雙精度數值資料
logical 邏輯值為10,分別代表truefalse
char 字元資料(字串作為字元向量儲存)
單元格陣列 索引單元陣列,每個都能夠儲存不同維數和資料型別的陣列
結構體 C型結構,每個結構具有能夠儲存不同維數和資料型別的陣列的命名欄位
函式處理 指向一個函式的指標
使用者類 使用者定義的類構造的物件
Java類 從Java類構造的物件

範例

使用以下程式碼建立指令碼檔案(datatype1.m) -

str = 'Hello World!'
n = 2345
d = double(n)
un = uint32(789.50)
rn = 5678.92347
c = int32(rn)

當上述程式碼被編譯和執行時,它產生以下結果 -

Trial>> datatype1

str =

    'Hello World!'


n =

        2345


d =

        2345


un =

  uint32

   790


rn =

   5.6789e+03


c =

  int32

   5679

資料型別轉換

MATLAB提供了各種用于將一種資料型別轉換為另一種資料型別的函式。 下表顯示了資料型別轉換函式 -

函式 描述說明
char 轉換為字元陣列(字串)
int2str 將整數資料轉換為字串
mat2str 將矩陣轉換為字串
num2str 將數位轉換為字串
str2double 將字串轉換為雙精度值
str2num 將字串轉換為數位
native2unicode 將數位位元組轉換為Unicode字元
unicode2native 將Unicode字元轉換為數位位元組
base2dec 將基數N字串轉換為十進位制數
bin2dec 將二進位制數位串轉換為十進位制數
dec2base 將十進位制轉換為字串中的N數位
dec2bin 將十進位制轉換為字串中的二進位制數
dec2hex 將十進位制轉換為十六進位制數位
hex2dec 將十六進位制數位字串轉換為十進位制數
hex2num 將十六進位制數位字串轉換為雙精度數位
num2hex 將單數轉換為IEEE十六進位制字串
cell2mat 將單元格陣列轉換為陣列
cell2struct 將單元格陣列轉換為結構陣列
cellstr 從字元陣列建立字串陣列
mat2cell 將陣列轉換為具有潛在不同大小的單元格的單元陣列
num2cell 將陣列轉換為具有一致大小的單元格的單元陣列
struct2cell 將結構轉換為單元格陣列

資料型別確定

MATLAB提供了用於識別變數資料型別的各種函式。

下表提供了確定變數資料型別的函式 -

函式 描述說明
is 檢測狀態
isa 確定輸入是否是指定類的物件
iscell 確定輸入是單元格陣列
iscellstr 確定輸入是字串的單元格陣列
ischar 確定專案是否是字元陣列
isfield 確定輸入是否是結構陣列欄位
isfloat 確定輸入是否為浮點陣列
ishghandle 確定是否用於處理圖形物件控制代碼
isinteger 確定輸入是否為整數陣列
isjava 確定輸入是否為Java物件
islogical 確定輸入是否為邏輯陣列
isnumeric 確定輸入是否是數位陣列
isobject 確定輸入是否為MATLAB物件
isreal 檢查輸入是否為實數陣列
isscalar 確定輸入是否為標量
isstr 確定輸入是否是字元陣列
isstruct 確定輸入是否是結構陣列
isvector 確定輸入是否為向量
class 確定物件的類
validateattributes 檢查陣列的有效性
whos 在工作區中列出變數,其大小和型別

範例

使用以下程式碼建立指令碼檔案 -

x = 3
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)

x = 23.54
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)

x = [1 2 3]
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)

x = 'Hello'
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)

執行檔案後,產生以下結果 -

x = 3
ans = 0
ans = 1
ans = 1
ans = 1
ans = 1
x = 1177/50
ans = 0
ans = 1
ans = 1
ans = 1
ans = 1
x =

          1          2          3

ans = 0
ans = 1
ans = 1
ans = 0
x = Hello
ans = 0
ans = 0
ans = 1
ans = 0
ans = 0