變更訊號資料之時間軸設定。將資料時間軸由非等時間距 ( Indexed ) 轉換為等時間距 ( Regular )。
說明
使用Open data 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:直接改變原訊號的時間軸資訊,改以時間起始點( |
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)
讀取一組訊號格式為 Indexed 的訊號,先如下圖產生一組簡單的資料檔,第一行(column)為時間,第二行為資料。
然後按下 Network 工具列的,或以 Source / Open
data from file 讀取訊號檔,檔案 testData.txt,Text Importer 中需勾選 Specify
Time Column,再按確定即可。
匯入訊號後以 Viewer / Channel Viewer 繪圖,並點選 testData 元件,檢視 Properties 下 Module 的 OutoutDataType,可以看到時間軸格式為 Indexed。
將 testData 後方接 Toregular,可將訊號轉為等時間間隔,再用Channel Viewer 繪出結果。To regular 的 Properties 中可看到預設方法 RemoveGap,而 Sampling Period則會偵測最小的取樣週期作為時間離散的依據,所以取樣週期為 0.1 秒,時間總長變為 0.1 x 9 = 0.9 秒。
改變 Toregular 的 Properties / ConvertMethod 為 FillGap,FillMethod 設為 Monotonic Cubic,輸出結果如下,可發現 FillGap 維持了原訊號的時間軸定義,以近似 0.1秒 的取樣頻率將訊號的時間軸化作等間隔分佈。
Toregular 允許使用者些微調整訊號之取樣頻率。首先將 AutoDetect 設為 False,然後 SamplingPeriod 調為1.4,再將輸出結果拉至 Viewer[1]與原訊號交互比較,其中黑線為原訊號,藍線為 Toregular 訊號,可以發現取了較大的取樣頻率已扭曲了訊號之波型。
再嘗試將 Sampling Period 調為 1.5,程式會跳出對話窗禁止使用者輸入大於原訊號最小取樣頻率 1.5 倍之數值,以避免造成過大的偏差。如需改變此訊號的取樣週期,建議利用模組 Resample 達成。
相關指令
Convert to Audio,Filling Null Value,Resample。