資料型別

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 將用新的資料替換原始資料,並在必要時分配新的儲存空間。

基本資料型別

基本資料型別有:數字,logicalcharcellstructtablefunction_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);
    
  • char

    字元陣列為 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 函式外部呼叫本地函式。

每種資料型別都有很多工具,還有內建的資料型別轉換功能str2doubletable2cell)。

其他資料型別

有幾種其他資料型別在某些特定情況下很有用。他們是:

  • 日期和時間:表示日期,時間和持續時間的陣列。datetime('now') 返回 21-Jul-2016 16:30:16

  • 分類陣列:它是用於儲存具有一組離散類別的值的資料的資料型別。用於儲存非數字資料(儲存器有效)。可以在表中使用來選擇行組。

    a = categorical({'a' 'b' 'c'});
    
  • 對映容器是一種資料結構,它具有獨特的能力,不僅可以通過任何標量數值而且可以通過字元向量進行索引。對 Map 元素的索引稱為鍵。這些鍵以及與它們關聯的資料值儲存在 Map 中。

  • 時間序列是按時間順序取樣的資料向量,通常以規則的間隔進行。儲存與時間步長相關的資料非常有用,它有許多有用的方法可供使用。