MATLAB - 時間表



時間表是 MATLAB 中提供的一種資料結構。它本質上是帶有行和列的表格,其中每一行都帶有時間戳。資料儲存在面向列的資料變數中,這些變數將具有不同的資料型別和大小,但行數相同。時間表提供各種與時間相關的函式。它們處理對齊、組合,並允許對給定時間表中帶時間戳的資料進行數學運算。

由於儲存的資料帶有時間戳,因此有助於分析資料,並且可以在不同的領域和應用中發揮作用。在現實世界中,有很多使用場景可以應用時間表。以下是一些您可以使用時間表的主要領域:

  • 醫學研究 - 在這裡,您可以使用時間表來儲存和分析與藥物和疾病實驗相關的資料。實驗可以與心肺、幹細胞、感染和免疫等相關。稍後可以使用 plot 和 histogram 等函式繪製資料。
  • 股票市場分析 - 來自股票市場的資料量巨大。您可以使用時間表來儲存和分析它。MATLAB 中還有其他有用的方法可以用於計算數字。
  • 環境監測和評估 - 來自環境研究的資料可以儲存在時間表中以進行進一步分析。
  • 感測器資料 - 使用時間表,您可以分析和儲存與 GPS、溫度等相關的感測器資料。

讓我們深入瞭解 MATLAB 中時間表的工作原理。

建立時間表

MATLAB 提供多種建立時間表的方法,以下是其中一些:

  • 使用 timetable() 函式
  • 使用 array2timetable() 函式
  • 使用 table2timetable() 函式
  • 使用 timeseries2timetable() 函式

使用 timetable() 函式

以下是 timetable() 函式的語法:

語法

T = timetable(rowTimes,var1,...,varN)

timetable() 函式將建立一個表格,其中 var1…varN 是輸入資料變數。引數 rowTimes 是一個時間向量。在上述函式中,資料變數 var1..varN 的資料型別可以不同,但應具有相同數量的行。rowTimes 同理,它是一個包含 datetime 或 duration 的向量。

要建立 rowTimes,我們將使用 dateTime() 函式,如下所示:

timer = datetime({'2023-01-01 09:00:00';'2023-01-01 09:30:00';'2023-01-01 10:00:00'});

在 MATLAB 中執行上述程式碼後,輸出如下:

>> timer = datetime({'2023-01-01 09:00:00';'2023-01-01 09:30:00';'2023-01-01 10:00:00'})

timer = 

  3×1 datetime array

   01-Jan-2023 09:00:00
   01-Jan-2023 09:30:00
   01-Jan-2023 10:00:00

>>

讓我們將計時器和資料變數饋送到 timetable 函式,並在 MATLAB 中檢視輸出。

T = timetable(timer ,DayTemp ,DayPressure)

在 MATLAB 中執行後,我們得到以下輸出

>> timer = datetime({'2023-01-01 09:00:00';'2023-01-01 09:30:00';'2023-01-01 10:00:00'});
DayTemp = [28.3;30.0;33.3];
DayPressure = [23.1;23.03;33.9];
T = timetable(timer ,DayTemp ,DayPressure)

T =

  3×2 timetable

           timer            DayTemp    DayPressure
    ____________________    _______    ___________

    01-Jan-2023 09:00:00     28.3          23.1   
    01-Jan-2023 09:30:00       30         23.03   
    01-Jan-2023 10:00:00     33.3          33.9   

>>

使用 array2timetable() 函式

以下是 array2timetable() 函式的語法:

語法

array2timetable() 函式將返回一個時間表,其中 X 是一個 MXN 陣列,rowTimes 是一個大小為 Mx1 的向量陣列。

讓我們看一個使用 array2timetable() 函式建立時間表的示例。

示例

首先,讓我們建立一個 3x3 矩陣作為 X。

X = rand(3,3)

現在讓我們建立一個行向量 rowTimes。

rowTimes = seconds(1:3)

現在讓我們在 array2timetable() 函式中使用 X 和 rowTimes 並檢視輸出

X = rand(3,3)
rowTimes  = seconds(1:3)
TT = array2timetable(X,'RowTimes',rowTimes)

在 MATLAB 中執行後的輸出如下:

>> X = rand(3,3)
rowTimes  = seconds(1:3)
TT = array2timetable(X,'RowTimes',rowTimes)

X =

    0.6787    0.3922    0.7060
    0.7577    0.6555    0.0318
    0.7431    0.1712    0.2769


rowTimes = 

  1×3 duration array

   1 sec   2 sec   3 sec


TT =

  3×3 timetable

    Time       X1         X2          X3   
    _____    _______    _______    ________

    1 sec    0.67874    0.39223     0.70605
    2 sec    0.75774    0.65548    0.031833
    3 sec    0.74313    0.17119     0.27692

>>

使用 table2timetable() 函式

在本例中,我們將使用一個表格,使用 table2timetable() 函式從中建立一個時間表。

表格是 MATLAB 中的一種資料型別,它以表格格式儲存資料,就像您在電子表格中看到資料一樣。

表格示例如下:

Name = {'Siya';'Riya';'Helen';'Reena'};
Age = [25;30;35;40];
Height = [149;150;160;153];
Weight = [50;65;48;52];
Timer = datetime({'2023-01-01 09:00:00';'2023-01-01 09:30:00';'2023-01-01 10:00:00';'2023-01-01 11:00:00'})
T = table(Name,Age,Height,Weight,Timer)

在 MATLAB 中執行後,建立的表格如下所示:

T = table(Name,Age,Height,Weight, Timer)

T =

  4×5 table

      Name       Age    Height    Weight           Timer       
    _________    ___    ______    ______    ___________________

    {'Siya' }    25      149        50      2023-01-01 09:00:00
    {'Riya' }    30      150        65      2023-01-01 09:30:00
    {'Helen'}    35      160        48      2023-01-01 10:00:00
    {'Reena'}    40      153        52      2023-01-01 11:00:00

現在讓我們使用相同的表格從中建立一個時間表。

所用函式的語法為:

TT = table2timetable(T)

T 是輸入到 table2timetable() 函式的表格。讓我們在 MATLAB 中執行相同的操作

>> TT = table2timetable(T)

TT =

  4×4 timetable

           Timer              Name       Age    Height    Weight
    ____________________    _________    ___    ______    ______

    01-Jan-2023 09:00:00    {'Siya' }    25      149        50  
    01-Jan-2023 09:30:00    {'Riya' }    30      150        65  
    01-Jan-2023 10:00:00    {'Helen'}    35      160        48  
    01-Jan-2023 11:00:00    {'Reena'}    40      153        52  

>> 

使用 timeseries2timetable() 函式

timeseries2timetable() 函式將時間序列物件轉換為時間表。

語法如下:

TT = timeseries2timetable(ts)

這裡 ts 是時間序列物件。

下面的示例顯示了 timeseries() 函式,它返回時間序列物件,我們稍後可以在 timeseries2timetable() 函式中使用它。

ts = timeseries(rand(5,1),[0 05 10 15 20])

時間序列物件由 5 個以 5 秒間隔取樣的隨機陣列成。

在 MATLAB 中執行後的輸出為:

>> ts = timeseries(rand(5,1),[0 05 10 15 20])
  timeseries

  Common Properties:
            Name: 'unnamed'
            Time: [5x1 double]
        TimeInfo: [1x1 tsdata.timemetadata]
            Data: [5x1 double]
        DataInfo: [1x1 tsdata.datametadata]

  More properties, Methods

>> ts.Time

ans =

     0
     5
    10
    15
    20

>> 

屬性 ts.Time 返回時間。

現在讓我們在 timeseries2timetable() 函式中使用時間序列物件

TT = timeseries2timetable(ts)

在 MATLAB 中執行後的輸出如下:

>> TT = timeseries2timetable(ts)

TT =

  5×1 timetable

     Time      Data  
    ______    _______

    0 sec     0.81472
    5 sec     0.90579
    10 sec    0.12699
    15 sec    0.91338
    20 sec    0.63236

>> 
廣告

© . All rights reserved.