MATLAB - 表格



在 MATLAB 中,表格是一種資料結構,用於儲存不同型別資料的表格型資料,這些資料儲存在命名列中。您可以輕鬆地將表格與電子表格或資料庫表格關聯。您可以輕鬆地管理和操作 MATLAB 表格中的資料。

由於表格旨在處理不同型別的資料,因此表格的每一列都可以儲存不同型別的資料,使其能夠靈活地處理異構型別的資料。

在表格中,面向列的單個數據集儲存在變數中。表格變數在資料型別和大小方面可能有所不同,只要它們都具有相同數量的行即可。就像結構中的欄位一樣,表格變數也具有特定的名稱。

由於我們已經大量使用了矩陣,讓我們瞭解表格和矩陣的不同之處。

矩陣 表格

矩陣旨在儲存相同型別的資料,即所有元素都具有相同的資料型別。因此,矩陣本質上是同構的。

表格列可以具有不同的資料型別,使其適合處理混合資料。因此,表格本質上是異構的。

在矩陣中,我們使用索引來訪問行和列的元素。

在表格中,使用列名來訪問表格中的資料。這為我們提供了一種更具描述性和意義的資料訪問方式。

使用表格的優勢

  • 表格列被分配了名稱,因此可以很容易地引用和更改特定資料。

  • 表格列可以具有不同的資料型別,允許您在一個結構中儲存各種資訊。

  • 表格帶有內建函式,有助於快速概述資料。它還有助於處理缺失資料和重複資料。

使用表格的缺點

  • 對於大型資料集,與簡單的陣列相比,表格佔用的記憶體更多。

  • 某些矩陣運算可能無法直接應用於表格。

建立 MATLAB 表格

要建立一個 MATLAB 表格,我們將使用 MATLAB 的內建函式 table()。您可以透過兩種方式使用 table() 函式。

  • 一種是從現有的工作區變數建立表格。

  • 第二種是建立一個表格,為稍後填充值的變數預留空間。

語法

T = table(var1,...,varN)
T = table('Size',sz,'VariableTypes',varTypes)

第一種語法 table(var1…varN),這裡 var1…varN 是成為表格中一列的變數,它們應該具有相同數量的行。生成的表格 T 將包含這些列,列名將根據變數名自動分配。

第二種語法 table('Size',sz,'VariableTypes',varTypes),

'Size', sz − 指定表格的大小,即行數和列數。sz 是一個二元素向量,其中第一個元素表示行數,第二個元素表示列數。

'VariableTypes', varTypes − 指定表格中變數(列)的資料型別。varTypes 是一個元胞陣列,每個元胞包含對應列的資料型別。

T = table(var1,...,varN) − 透過組合現有的變數 var1 到 varN 建立一個表格,而

T = table('Size',sz,'VariableTypes',varTypes) − 語法預先分配表格的空間並預先定義變數型別。當您預先知道資料的大小和型別時,這尤其有用。

表格建立示例

示例 1

在這個例子中,讓我們檢查學生的成績,所以我們有學生的名字和他們的成績。

std_names = {'Tiya', 'Riya', 'Siya', 'Jiya'}
std_scores = [85, 72, 92, 78]
studentTable = table(std_names, std_scores)

在上面的例子中,我們有包含學生姓名和成績的變數 std_names 和 std_scores。table 函式將這些變數組合起來建立 studentTable,其中第一列命名為 'std_names',第二列命名為 'std_scores'。

在 MATLAB 命令視窗中執行後,輸出為:

std_names =
{
  [1,1] = Tiya
  [1,2] = Riya
  [1,3] = Siya
  [1,4] = Jiya
}

std_scores =

   85   72   92   78

示例 2

使用與上述示例中相同的變數,讓我們向其中新增自定義列名。

std_names = {'Tiya', 'Riya', 'Siya', 'Jiya'}
std_scores = [85, 72, 92, 78]
studentTable = table(std_names, std_scores, 'VariableNames', {'Student', 'TestScore'})

現在,當您在 MATLAB 命令視窗中執行相同的操作時,該表格將具有“學生”和“考試成績”之類的列名。

std_names =
{
  [1,1] = Tiya
  [1,2] = Riya
  [1,3] = Siya
  [1,4] = Jiya
}

std_scores =

   85   72   92   78

示例 3

在這個例子中,我們將建立一個具有大小和變數型別的表格。

tableSize = [5, 3]
variableTypes = {'string', 'double', 'int32'}
Table = table('Size', tableSize, 'VariableTypes', variableTypes)

在這個例子中,tableSize 將表格的大小定義為 5 行 3 列,variableTypes 指示第一列應為 'string' 型別,第二列為 'double' 型別,第三列為 'int32' 型別。

當您在 MATLAB 命令視窗中執行相同的操作時,輸出為:

tableSize =

   5   3

variableTypes =
{
  [1,1] = string
  [1,2] = double
  [1,3] = int32
}

訪問表格資料

假設我們有以下表格。

std_names = {'Tiya', 'Riya', 'Siya', 'Jiya'}
std_scores = [85, 72, 92, 78]
studentTable = table(std_names, std_scores, 'VariableNames', {'Student', 'TestScore'})

輸出將是:

std_names =
{
  [1,1] = Tiya
  [1,2] = Riya
  [1,3] = Siya
  [1,4] = Jiya
}

std_scores =

   85   72   92   78

要訪問資料,您可以按照以下步驟操作:

T.Variables

例如

studentTable.Student
studentTable.TestScore

執行上述操作後,您將得到:

>> studentTable.Student
studentTable.TestScore


ans =

  1x4 cell array

    {'Tiya'}    {'Riya'}    {'Siya'}    {'Jiya'}


ans =

    85    72    92    78

獲取單個姓名和分數,您可以執行以下操作:

studentTable.Student{1}

執行後,您將得到:

>> studentTable.Student{1}

ans =

    'Tiya'

帶有行名和列名的表格

在上一節中,我們已經看到了如何向表格中新增列名。在這裡,我們將新增行名並訪問已建立的表格中的資料。

Names = {'Siya';'Riya';'Jiya';'Tiya';'Kiya'};
Age = [48;23;28;20;49];
Height = [105;140;150;130;156];
Weight = [60;80;50;45;54];

T = table(Age,Weight,Height,'RowNames',Names)

Age、Weight 和 Height 資料向量成為表格的列。'RowNames' 引數將 Names 元胞陣列中的名稱指定為每個條目的行名。

當您在 MATLAB 命令視窗中執行相同的操作時,輸出為:

>> Names = {'Siya';'Riya';'Jiya';'Tiya';'Kiya'};
Age = [48;23;28;20;49];
Height = [105;140;150;130;156];
Weight = [60;80;50;45;54];

T = table(Age,Weight,Height,'RowNames',Names)

T =

  5x3 table

            Age    Weight    Height
            ___    ______    ______

    Siya    48       60       105  
    Riya    23       80       140  
    Jiya    28       50       150  
    Tiya    20       45       130  
    Kiya    49       54       156  

現在,當您想要訪問與名稱相關的任何內容時,可以按如下方式進行:

T('Riya',:)

執行後的輸出為:

>> T('Riya',:)

ans =

  1x3 table

             Age    Weight      Height
             ___    ______    ______

    Riya     23       80         140  

要獲取多行資料,可以按照如下方法:

T({'Riya','Tiya'},:)

執行後的輸出為:

>> T({'Riya','Tiya'},:)

ans =

  2x3 table

            Age    Weight    Height
            ___    ______    ______

    Riya    23       80       140  
    Tiya    20       45       130  
廣告
© . All rights reserved.