4.3 Convert to regular

變更訊號資料之時間軸設定。將資料時間軸由非等時間距 ( Indexed ) 轉換為等時間距 ( Regular )。

說明

使用Opendata from file 讀取 .txt、.csv 等純文字檔時,若有一行或列的資料是時間軸座標,會建議利用Text Importer 中的 Specify Time column / row 功能來讀取指定的時間軸資料,此時訊號格式之時間類別將被標示為Indexed,即假設資料之取樣週期大小不一,而大部份模組會要求訊號格式為 Regular,因此透過本模組可將 Indexed 訊號轉換為等時間距排列 (Regular) 的訊號。

Indexed 格式之假設時間間隔為不等間距,轉換成等時間距訊號的過程可選擇對輸入訊號重新取樣,重新取樣的方法有 FillGap 與 RemoveGap。假設輸入訊號為,時間起始點是,取樣週期為,資料個數為,輸入訊號之時間軸可表示為:

其中代表訊號資料點對應的時間。而 FillGap 與RemoveGap 計算如下。

FillGap:

FillGap 時間軸資料以下式計算。

其中代表等間隔排列(regular)的訊號時間軸,代表重新取樣的週期,代表輸出訊號之資料個數;須注意要小於等於1.5倍之最小值,且由於 FillGap 會進行補值,所以輸出訊號的資料個數會大於等於

輸出訊號資料之計算如下:

,則對應之輸入訊號間會以下列補值方法求出,而因補值新增的資料個數由的整數部份決定。

Fix:以固定值進行補值。

Prev:以前面那點的值補值。

Next:以後面那點的值補值。

Linear Interpolation:以線性內差的方法補值。

Spline Interpolation:以Spline內差的方法補值。

Monotonic Cubic Spline:為有damping的三次內插法,此法在處理在斜率很大的訊號(如方波)時,可避免劇烈振盪,較Spline為佳。

No Fill:缺值維持NaN。

,則對應輸入訊號間會直接傳至輸出訊號

RemoveFillGap:

依據重新計算時間軸,將輸入訊號的時間軸置換為

之算式為

因此RemoveGap的輸出訊號個數與輸入訊號時數相同,僅改變輸入訊號時間軸為等間隔排列。

參數設定(Properties)

本模組接受實數(real number)、複數(complex number),單通道(single channel)或多通道(multi-channel),indexed的訊號;輸出訊號格式為實數、複數,單通道或多通道,regular的訊號。

參數 AutoDetect 可讓使用者選擇是否要自訂輸出訊號之 Sampling Period,因為輸入的 indexed 訊號各資料點間的取樣週期大小不一,所以若AutoDetect設為True,則模組會自動偵測輸入訊號裡最小的取樣週期作為參數Sampling Period的值;若AutoDetect設為false,使用者可自訂參數Sampling Period,由於過大的取樣週期會造成很大的計算誤差,使輸出訊號與原輸入訊號有明顯的差異,因此自訂取樣週期的限制是不得大於1.5倍AutoDetect的取樣週期。

參數 ConvertMethod 可選擇使用 FillGap 或 RemoveGap 的方法計算輸入訊號之時間軸,選擇 FillGap 後多新增參數 FillMethod 讓使用者挑選補值方法,相關內容說明如下:

參數名稱

參數定義

預設值

Convert Method

FillGap:用補值方法對輸入訊號作重新取樣。

RemoveGap:直接改變原訊號的時間軸資訊,改以時間起始點()以及參數Sampling Period()重新排列資料的時間。

FillGap

FillMethod

當 ConvertMethod = FillGap 時,則可以選擇如何補點:

FixedValue:以 NullValue 作為補點固定值。

LinearInterpolation

PrevValue:前一個出現的值。

NextValue:後一個出現的值。

LinearInterpolation:線性內插。

SplineInterpolation:以 Spline Curve 運算內差。

Monotonic Cubice 為有 damping 的三次內插法,此法在處理在斜率很大的訊號(如方波)時,可避免劇烈振盪,較Spline為佳。

NoFill:不補點,則資料依然會缺值,造成運算不正確。

LinearInterpolation

Sampling Period

顯示或設定輸出訊號的取樣週期

當AutoDetect 設為 True,此參數顯示偵測到的輸入訊號之最小取樣週期,即

當AutoDetect 設為 False,此參數除顯示外,還可設定訊號,限制是

Unit

顯示或設定輸出訊號的取樣時間單位。

當 AutoDetect 設為 True,此參數顯示偵測到的訊號時間單位。

當 AutoDetect 設為 False,此參數除顯示訊號時間單位外,還可搭配參數 SamplingPeriod 設定訊號時間單位。

根據輸入訊號判斷

AutoDetect

是否自動偵測 Sampling Period 和 Unit

True

NullValue

若 ConvertMethod 設為 FillGap,FillMethod 設為 FixedValue,會新增此參數設定補點所使用的固定值。

0

範例(Example)

  1. 讀取一組訊號格式為 Indexed 的訊號,先如下圖產生一組簡單的資料檔,第一行(column)為時間,第二行為資料。

    然後按下 Network 工具列的,或以 Source / Open data from file 讀取訊號檔,檔案 testData.txt,Text Importer 中需勾選 Specify Time Column,再按確定即可。

匯入訊號後以 Viewer / Channel Viewer 繪圖,並點選 testData 元件,檢視 Properties 下 Module 的 OutoutDataType,可以看到時間軸格式為 Indexed。

  1. 將 testData 後方接 Toregular,可將訊號轉為等時間間隔,再用Channel Viewer 繪出結果。To regular 的 Properties 中可看到預設方法 RemoveGap,而 Sampling Period則會偵測最小的取樣週期作為時間離散的依據,所以取樣週期為 0.1 秒,時間總長變為 0.1 x 9 = 0.9 秒。

  1. 改變 Toregular 的 Properties / ConvertMethod 為 FillGap,FillMethod 設為 Monotonic Cubic,輸出結果如下,可發現 FillGap 維持了原訊號的時間軸定義,以近似 0.1秒 的取樣頻率將訊號的時間軸化作等間隔分佈。

  1. Toregular 允許使用者些微調整訊號之取樣頻率。首先將 AutoDetect 設為 False,然後 SamplingPeriod 調為1.4,再將輸出結果拉至 Viewer[1]與原訊號交互比較,其中黑線為原訊號,藍線為 Toregular 訊號,可以發現取了較大的取樣頻率已扭曲了訊號之波型。

  2. 再嘗試將 Sampling Period 調為 1.5,程式會跳出對話窗禁止使用者輸入大於原訊號最小取樣頻率 1.5 倍之數值,以避免造成過大的偏差。如需改變此訊號的取樣週期,建議利用模組 Resample 達成。

相關指令

Convert to Audio,Filling Null Value,Resample。

Converted from CHM to HTML with chm2web Standard 2.85 (unicode)