資料型別
MATLAB 中有 16 種基本資料型別或類。這些類中的每一個都是矩陣或陣列的形式。除了函式控制代碼之外,這個矩陣或陣列的大小至少為 0 乘 0,並且可以增長到任何大小的 n 維陣列。函式控制代碼始終是標量(1 乘 1)。
MATLAB 中的重要時刻是預設情況下不需要使用任何型別宣告或維度語句。定義新變數時,MATLAB 會自動建立它並分配適當的記憶體空間。
例:
a = 123;
b = [1 2 3];
c = '123';
>> whos
Name Size Bytes Class Attributes
a 1x1 8 double
b 1x3 24 double
c 1x3 6 char
如果變數已經存在,MATLAB 將用新的資料替換原始資料,並在必要時分配新的儲存空間。
基本資料型別
基本資料型別有:數字,logical
,char
,cell
,struct
,table
和 function_handle
。
數字資料型別 :
-
浮點數 ( 預設 )
MATLAB 以雙精度或單精度格式表示浮點數。預設值是雙精度,但你可以使用簡單的轉換函式使任何數字單精度:
a = 1.23; b = single(a); >> whos Name Size Bytes Class Attributes a 1x1 8 double b 1x1 4 single
-
MATLAB 有四個有符號整數和四個無符號整數類。有符號型別使你可以使用負整數和正整數,但不能表示與無符號型別一樣寬的數字範圍,因為一位用於指定數字的正號或負號。無符號型別為你提供更廣泛的數字,但這些數字只能為零或正數。
MATLAB 支援整數資料的 1 位,2 位,4 位和 8 位元組儲存。如果使用適合資料的最小整數型別,則可以節省程式的記憶體和執行時間。例如,你不需要 32 位整數來儲存值 100。
a = int32(100); b = int8(100); >> whos Name Size Bytes Class Attributes a 1x1 4 int32 b 1x1 1 int8
要將資料儲存為整數,你需要將 double 轉換為所需的整數型別。如果轉換為整數的數字具有小數部分,則 MATLAB 將舍入為最接近的整數。如果小數部分恰好是
0.5
,那麼從兩個同樣接近的整數中,MATLAB 選擇絕對值大小的那個。a = int16(456);
-
字元陣列為 MATLAB 中的文字資料提供儲存。與傳統的程式設計術語保持一致,字元的陣列(序列)被定義為字串。MATLAB 的零售版中沒有明確的字串型別。
-
logical:邏輯值為 1 或 0,分別表示 true 和 false。用於關係條件和陣列索引。因為它只是 TRUE 或 FALSE,所以它的大小為 1 個位元組。
a = logical(1);
-
結構體。結構陣列是一種資料型別,它使用稱為欄位的資料容器對不同資料型別的變數進行分組。每個欄位可以包含任何型別的資料。使用 structName.fieldName 形式的點表示法訪問結構中的資料。
field1 = 'first'; field2 = 'second'; value1 = [1 2 3 4 5]; value2 = 'sometext'; s = struct(field1,value1,field2,value2);
為了訪問 value1,以下每個語法都是等效的
s.first or s.(field1) or s.('first')
我們可以使用第一種方法顯式訪問我們知道將存在的欄位,或者傳遞字串或建立字串以訪問第二個示例中的欄位。第三個例子是說明點父語法符號採用一個字串,該字串與儲存在 field1 變數中的字串相同。
-
表變數可以具有不同的大小和資料型別,但所有變數必須具有相同的行數。
Age = [15 25 54]'; Height = [176 190 165]'; Name = {'Mike', 'Pete', 'Steeve'}'; T = table(Name,Age, Height);
-
單元格。它是非常有用的 MATLAB 資料型別:單元陣列是一個陣列,它的每個元素可以是不同的資料型別和大小。它是非常強大的工具,可以根據需要運算元據。
a = { [1 2 3], 56, 'art'};
要麼
a = cell(3);
-
function handle 儲存指向函式的指標(例如,儲存到匿名函式)。它允許你將函式傳遞給另一個函式,或從 main 函式外部呼叫本地函式。
每種資料型別都有很多工具,還有內建的資料型別轉換功能 (str2double
,table2cell
)。
其他資料型別
有幾種其他資料型別在某些特定情況下很有用。他們是:
-
日期和時間:表示日期,時間和持續時間的陣列。
datetime('now')
返回21-Jul-2016 16:30:16
。 -
分類陣列:它是用於儲存具有一組離散類別的值的資料的資料型別。用於儲存非數字資料(儲存器有效)。可以在表中使用來選擇行組。
a = categorical({'a' 'b' 'c'});
-
對映容器是一種資料結構,它具有獨特的能力,不僅可以通過任何標量數值而且可以通過字元向量進行索引。對 Map 元素的索引稱為鍵。這些鍵以及與它們關聯的資料值儲存在 Map 中。
-
時間序列是按時間順序取樣的資料向量,通常以規則的間隔進行。儲存與時間步長相關的資料非常有用,它有許多有用的方法可供使用。