MATLAB - 資料型別



MATLAB 不需要任何型別宣告或維度語句。每當 MATLAB 遇到一個新的變數名時,它都會建立該變數並分配相應的記憶體空間。

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

例如:

Total = 42

上述語句建立一個名為“Total”的 1×1 矩陣,並在其中儲存值 42。

MATLAB 中可用的資料型別

MATLAB 提供 15 種基本資料型別。每種資料型別都儲存以矩陣或陣列形式存在的資料。此矩陣或陣列的尺寸最小為 0×0,可以增長到任何尺寸的矩陣或陣列。

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

序號 資料型別和描述
1

int8

8 位有符號整數

2

uint8

8 位無符號整數

3

int16

16 位有符號整數

4

uint16

16 位無符號整數

5

int32

32 位有符號整數

6

uint32

32 位無符號整數

7

int64

64 位有符號整數

8

uint64

64 位無符號整數

9

single

單精度數值資料

10

double

雙精度數值資料

11

logical

邏輯值 1 或 0,分別表示真和假

12

char

字元資料(字串儲存為字元向量)

13

元胞陣列

索引單元格的陣列,每個單元格都可以儲存不同維度和資料型別的陣列

14

結構體

C 語言風格的結構體,每個結構體都有命名欄位,可以儲存不同維度和資料型別的陣列

15

函式控制代碼

指向函式的指標

16

使用者類

從使用者定義的類構造的物件

17

Java 類

從 Java 類構造的物件

示例

建立一個包含以下程式碼的指令碼檔案:

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

編譯並執行上述程式碼後,將產生以下結果:

str = Hello World!
n =  2345
d =  2345
un = 790
rn = 5678.9
c =  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 = 23.540
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
廣告