Chapter 5. 訊號源模組

Table of Contents

5.1 Open Data
SAC Importer
WaveFormDatabase Importer
Text Importer
Matlab Importer
Import Wave or MP3
5.2 Noise
5.3 Sine Wave
5.4 Square Wave
5.5 Triangle Wave
5.6 Custom Wave
5.7 Impulse
5.8 Jaehne

5.1 Open Data

由外部匯入訊號檔。

參數說明(Properties)

有兩種方法可以匯入外部訊號檔 : (1) 在 Network 工具列上點選 Open Data from File 圖示,可選擇輸入檔案(即左下圖紅框按鈕),(2) 可以於模組編譯區利用滑數右鍵選單之 Source /Open Data fromFile (即右下圖所示)。

支援檔案種類

操作上述步驟後會跳出如下圖視窗供使用者選擇輸入的檔案,點選「檔案類型(T)」可查詢本產品所支援的檔案種類與資料格式。支援檔案包括純文字類的檔案,如 .txt、.csv、.tfa 等,聲音檔案如 .wav、.mp3 檔,以及特殊檔案格式如 MATLAB MAT 用的二進位檔 (binary file),SAC 地震分析軟體的資料檔,HEA 是由 Physionet 組織所發展一系列生醫訊號軟體之通用格式。支援的檔案中副檔名為 .tfa 的資料檔為本產品專屬的訊號儲存格式。檔案內容如下,開始起頭為 " # " 的是標頭文字,記錄訊號的時間軸資訊,以下的內容變是訊號資料,因此可直接在讀取 .tfa 訊號檔時得到時間軸的資訊。

副檔名

檔案類型

mat

MATLAB 資料檔。

sac

SAC 檔是套裝軟體SAC (Seismic Analsis Code) 的訊號檔,用在與地震相關之研究。

txt

一般 Plain Text File 純文字檔案。

tfa

Visual Signal 訊號檔。

csv

Comma-separated values。

wav

Wave聲音檔。

mp3

MPEG1 audio player 聲音檔。

hea

生醫訊號通用檔案格式,說明請參考www.physionet.org網頁內容。

下圖為 TFA 檔案的格式,主要包含兩部分有 時間軸資訊和訊號。

SAC Importer

SAC 為地震分析軟體的資料檔,讀取 sac 檔時程式會跳出 SAC Importer 以設定訊號的讀取範圍等參數,SAC Importer 介面如下圖所示:

SAC Signal Information可顯示與設定訊號的資訊,其中 Name、Channel Count、Sample Freq 顯示目前讀取的資料檔名稱、訊號通道數以及取樣頻率。Magnitude Unit 可供使用者設定訊號值的單位;Time Unit 可以讓使用者調整時間單位,當改變單位後,Sample Frequency 會自動換算為調整後的單位。

Data Range 可讓使用者設定讀取訊號的範圍,其中 Count 與 Range 欄位顯示資料數量與資料的時間長度,在 From、To 欄位可設定讀取訊號的起迄點位置,Down-sample by 欄位則可設定是否要 Down-sample 以及設定 Down-sample 的步長。

Data Axis 則可選擇是否設定年月日等時間軸資訊。

WaveFormDatabase Importer

HEA 是 Physionet 此組織發展一系列生醫訊號軟體之通用格式檔。讀取此檔時會跳出 WFDB Importer 協助使用者設定參數,下圖是 WFBD Importer 的使用介面。

介面前三大項 Signal Information、Data Range、DataAxis 與 SAC Importer 相同,這裡不再重複。當輸入訊號為多通道時,會出現 Selected Channels 的選項,讓使用者選擇讀取的 Channel。

Text Importer

Csv 與 Txt 是文字檔,Csv 是以逗點分格之形式;選定文字檔匯入時,會跳出 Text Importer 輸入設定介面(如下圖所示),供使用者定義訊號必備的格式。由於 Text Importer 式面操作上較複雜,用法上會以範例作進一步的說明,在此說明各參數之意義。

Data Range 定義檔案資料的排列方式,各參數意義整理如下表所示。

參數名稱

參數定義

預設值

Rows

資料在「列」方向的讀取範圍,如第一列至第三列為訊號資訊,第四列以下才是真正的訊號,設定為 4 to End。

1 to End

Columns

資料在「行」方向的讀取範圍。

1 to End

Data Direction

設定資料是以行的方向排列或是以列的方向排列,列如第一行為第一個通道訊號,則可設定 Column-based 。

Column-based

Concatenate to one channel

設定多行(列)的資料是否為同一通道的訊號。若 unchecked會判斷為多通道。

Unchecked

Specify Time Column

資料中是否一行(或一列)是訊號所對應的時間資料,若勾選,必須指定時間軸資料的行或列,需注意勾選後輸入訊號會變成 Indexed 格式。

Unchecked

Field Format 定義資料分隔的方式,White Spaced 代表資料間以空白鍵分隔,如 txt 檔多半按此格式儲存;Delimeter 代表資料間以逗號「,」分隔,如 csv 檔就是照此形式;Fixed field 則提供使用者自訂讀取的格式, " | " 代表抓取一個字元;" []" 代表抓取兩個字元的資料;" [-]"代表抓取三個字元的資料以此類推,所設定的每一個格式都當為一個通道,譬如此欄設為"|[--][]" 讀取資料列 " 123456789 ",資料會儲存為 3 個通道,第一個通道為 " 1 ",第二個通道為 " 2345 ", 第三個通道為 "67 ",數據 8 與 9 會被捨棄,然後再繼續掃描下一列。須注意若數據包括空白(white space),則會被認為到此列最後。

Null Value Handle 是當資料檔中有 Null 或 NaN 的狀況時,可以勾選 Use Null Value Handle 選擇填補缺值的方法。目前有 Fixed value、Prev value、Next value、Linear Interp、SplineInterp、Monotonic Cubic 等補值方法,請參閱模組 Resample 的說明部分。

Time Coordinate 是設定訊號時間軸資訊,若資料在時間上是以等間距排列,則此資料就是 regular,必須設定 Time Coordinate 下的參數,以設定起始時間、取樣頻率等資訊,各參數定義整理如下表所示。若已在 Data Range 中設定了 Specify Time Column,輸入後資料格式即為 Indexed,Indexed 格式中每個資料點都已經有相對應的時間座標值,因此除了時間單位 TimeUnit 需再設定之外,其它 Time Coordinate 的參數都用不到。

參數名稱

參數定義

預設值

Time Unit

設定資料的時間單位。程式的時間單位計有 psec、nsec、msec、sec、minute、hour、day、week、month(30 days)、year(365 days)。

sec

Time Shift

資料時間的起始值。

0

Sample Frequency

設定資料的取樣頻率。

1000

Down-sample by

若資料量太大,可、擇 Down-Sample by,每X個點取一次來降低取樣點數以節省計算時間。但擷取的資料點依然會套用參數所設定的取樣頻率,此功能等同於 Resample 這個模組。

unchecked

Date Axis 為設定訊號的年、月、日等時間軸資訊, 預設 Auto 為 Checked ,可以自動找尋資料中某行代表日期資訊,並且將 Specify Time Column 設定為此行,若將 Auto 及 SpecifyTime Column 設定為 Unchecked,才可以勾選 Enable 功能,此時訊號屬於等間距 ( regular ), 並可設定起始的日期時間

範例(Example)

多通道訊號資料檔

匯入一個多通道訊號資料檔,資料以空白鍵分隔,內有三組資料,一行為一筆,假設取樣頻率為 1000 Hz,時間單位為 milisecond,部份訊號內容如下圖所示。

  1. 可直接由紅圈起部份匯入,亦可由 Source / Open Data 匯入。

跳出 Text Importer,在此匯入的資料無時間軸資料,如想三筆全匯,就需將 Column 設為 1 to end;反之,若只想取第二行資料,就將其設定為 2to 2。

  1. 因為資料並無時間序列資訊,故需填寫 Time Coordinate 部份,在此例中為時間單位為秒,而單位時間內有 1000 筆資料。

匯入後連上 Channel Viewer 確認 :

本例示範資料檔包含時間座標值,且資料內容有缺值的時候該如何處理,有一行為時間軸座標,且內容有缺值的資料檔。

  1. 首先需了解資料檔內容(如下圖所示),第一列 至 第三列資料是註解文字而非訊號本身,第四列之後才是訊號。第一行資料內容是時間軸座標值,第二行的內容為每個時間點所對應的訊號值,可以發現第九列的訊號值是 NaN,而 NaN 是代表缺值(空值),了解資料檔內容後,接下來介紹如何利用 Text Importer 處理。

  1. 由於資料檔第一列至第三列是註解文字,所以在 Text Importer 的 Data Range 下,Rows 要調整為 4,指定訊號資料從第四列開始。 因為本資料第一行是時間軸座標,因此在要勾選 Specify Time Column,後方的數字可設定時間軸座標是在第幾行,本例是第一行,因為第二行為訊號本身,Columns 為 2 to end。

.

  1. 因為檔案是空白鍵分隔,所以不用改變 Field Format 設定。Null Value Handle 可對訊號空值的地方進行補值,補值方法與模組 Fill Null Value 相同,此例選擇用 Linear Interp 線性內差補值。

如選擇不補值,結束 TextImporter 後會有如下警告。

  1. 雖然資料檔已包含時間軸補座標值,但是時間單位仍未設定,因此在 Time Coordinate 下僅需要設定 Time Unit 即可,本例之時間單位為小時。

完成上述步驟後就算設定完畢,可以按下「Import」,即可將此訊號資料檔讀入。

因為選擇 Specify TimeColumn,讀進來的訊號格式為 Indexed,若訊號需作更進一步的處理,則需參考模組 Convert to regular 文件。

資料為 CSV 格式:

CSV 格式是資料以逗點分隔。此例中第一列至第三列是註解,因此須設定從第四列開始讀入;此外,資料有時間列在第二行。只要這時間格式是被.Net 平台所接受的,Visual Signal 會自動判斷時間格式,Field format 會自動設定分隔是逗點。

若資料量太大,則可選擇 Down-sample by,每X 個點取一次來降低取樣點數以節省計算時間。此例中是五個點取一次數值。

※ 不建議輸入有小數點的絕對時間單位,如2005 / 3 / 18 15:05:35.01242

  1. 若希望匯入之資料時間格式有日時分秒,且非以逗點分隔的 CSV 格式,如此就需設定 Data Axis 以及 Time Coordinate。此例中,為 Time Coordinate 設定時間起點從 2002 年 3 月 12 日 4 時6 分 50 秒開始,時間單位為一天,一單位時間內有 1000 筆資料。

  1. 若資料為固定格式,即每筆資料所佔之字元長度是相同的,則可用 Fixed field; " | "的功能是:一筆資料裡面,擷取 1 個字元的資料作為該通道的資料; " []" 的功能是:一筆資料裡面,擷取 2 個字元資料作為該通道的資料;" [ -]" 一筆資料裡面,擷取 3 個字元資料作為該通道的資料; " [ - -]" 的功能是:一筆資料裡面,擷取 4 個字元的資料作為該通道的資料。特別注意 Fixed field 會忽略所有空白,而將同列資料完全以字元數量做為分隔基準。

上圖的設定是表示將讀取進來的資料分為三個通道寫入;第一個通道讀進一個字元,第二個通道讀進三個字元 ( 第二到第四個字元 ),第三個通道讀進六個字元 ( 第五至第十個字元 ),在 File Content 中,最上方紅色數字表示為由左向右第幾個字元位置。X Value 則是依照Sample Frequency 的設定將 1 秒的資料分為 1000 筆,因此每 0.001 秒讀進一個數值。讀入後的資料可用 Data viewer 觀察結果。

Matlab Importer

若匯入者為 mat 這種 MATLAB 專用的二進位檔,則會進入如下列介紹的 Matlab Importer:

  1. 首先介紹開啟 mat 檔案而訊號格式為 Signal,則會進入以下畫面的 Matlab Importer,參數設定大致與文字檔完全相同。。

  1. 若匯入 mat 為包含訊號格式為時頻資料 ( Spectra ),此 mat 檔案必定包含三種變數 資料 ( X_value ) ( N * M 矩陣 )、時間軸 ( X_time ) ( M * 1 矩陣 )、頻率軸 ( X_freq ) ( N * 1 矩陣 ),Visual Signal 才能匯入時頻資料,列如本示範包含 STFT_value、STFT_time、STFT_freq,如下圖所示。

    假設 Import as Spectra 為Unchecked,則將會把資料 (_value ) 以多通道訊號匯入,並不會將頻率資訊 ( _freq ) 引入 ,在此必須特別注意。

Import Wave or MP3

若匯入是wav、mp3這兩種聲音檔,則會直接產生一個 Source 元件不會進入 Importer。

參數總覽如下:

參數名稱

參數定義

預設值

Data Range:選定之資料範圍。

Rows

列(row)之起點與終點。

全部

Column

行(column)之起點與終點。

全部

Data Direction

時間序列之方向(即資料是行輸入亦或列輸入) 。

Column(行)

Concatenate to

One Channel

若資料為多行,是否將所有列(行)串在一起視為一列(一行) ?

Specify Time

Column

原資料是否有時間序列?若有,則設定時間序列是第幾行。

無時間序列

Field Format:輸入資料的分隔方式。

White spaced

以空白分隔。

Delimeter

以標點分隔。

Fixed Field

設定每數值字串長度,作為資料分段之標準。

Null Valu列 Handle:有缺值資料的處理

NullFilledMethod

資料若缺值,補值與否?(補值之方法,請參考Compute/Channel/Fill Null Value)。

是,線性內插法。

Time Coordinate:設定時間軸資訊。

Time Shift

設定訊號的時間軸起始點。

0

Time Units

時間單位;可以為毫秒、秒、分、時、日、月、年。

Sample Frequency

取樣頻率,即單位時間內共有多少個取樣點。

1000

Down-sample by

若資料量太大,可選擇Down-sampleby,每X個點取一次來降低取樣點數以節省計算時間。但擷取的資料點依然會套用參數所設定的取樣頻率,此功能有別於Resample這個模組。

1

Date Axis

Enable

若資料是日期之型式且無時間序列,則須做此設定。

Unchecked/Disabled

Start Date/Time

起始日期;第一格為日期,後三格分別為時、分 、秒

相關指令

Viewer、Fill Null Value。