3.6 Transform

本模組為提供各種訊號處理常用之轉換運算。

  1. Fourier Transform/Inverse Fourieer Transform:傅立葉轉換與反轉換。

  2. Discrete Cosine Transform/Inverse Discrete Cosine Transform:離散餘弦轉換與反轉換。

  3. Haar Wavelet Transform:小波轉換中的Haar轉換。

  4. Hilbert Transform/Inverse Hilbert Transform:Hilbert轉換與反轉換。

  5. Auto Correlation:計算訊號的自相關性。

  6. Cross Correlation:計算訊號的交差相關性。

  7. Multi-Scale Entropy(MSE):計算訊號之多尺度熵。

3.6.1 Fourier Transform and Inverse Fourier Transform

傅立葉轉換為將時間訊號轉換為頻率之訊號,藉此檢視訊號內之的頻率與振幅分佈,其結果可以用傅立葉反轉換計算回原始的時間訊號。此理論廣泛的應用於通信、聲音訊號、系統分析以及自然科學等領域。

說明

為輸入訊號的第 n 個資料,一般而言,則訊號之離散傅立葉轉換為定義如下:

其離散傅立葉反轉換之定義如下:

而在 Visual Signal中,離散傅立葉轉換定義為:

離散傅立葉反轉定義為:

當輸入訊號,並不是周期性訊號( 既訊號頭與訊號尾並不連續且可微,此不良結果稱為洩漏效應 Spectral Leakage),插入窗函數 ( window ) 可降低 Spectral Leakage 的效應。

在離散傅立葉轉換,Resolution 屬性可用以增加頻率上的解析度。訊號長度越長,訊號的周期性越明確,所以增大 Resolution 可以增加訊號長度,可以增加頻率上的解析度。

參數設定(Properties)

本模組接受實數(real number),單通道(single channel)或多通道(multi-channel),regular的訊號(signal)、聲音訊號(audio)輸入;輸出格式為複數,單通道,regular的訊號(signal)。參數定義與相關設定如下。

參數 RemoveDC 計算出訊號的平均值並減去,參數 Min 與 Max 可調整作傅立葉轉換的頻率範圍,Window 參數內有六種常用的窗函數,目的是將離散訊號變的較為平滑並改善因 Spectral Leakage 而造成的數值誤差。

參數名稱

參數定義

預設值

RemoveDC

為消除訊號於縱軸之平移量,使訊號之平均為零。

True

Min

設定傅立葉轉換的頻率下限。

0

Max

設定傅立葉轉換的頻率上限,大小依輸入訊號不同而異。

auto

Resolution

調整傅立葉轉換時採用之解析度,意思為將整個資料列重複接續在原資料後面。如原資料數列為1-100,若將resolution設為2,既為第101個數列值同第一個,第102個數列值同第二個…以此類推,持續至200。

1

Window

以窗函數降低洩漏效應對轉換的影響,採用之函數包括Barlett、Blackman、Flat Top、Hanning、Hamming、Gauss 等六種類型,各函數之定義詳見下節窗函數說明。

none

窗函數說明(Window Function)

窗函數

定義與圖形

None

Barlett

Blackman

FlatTop

Hanning

Hamming

Gauss

下圖為傅立葉反轉換的參數設定。

傅立葉反轉換的參數為 Resolution,意義與上述傅立葉轉換中的參數雷同,調整後,傅立葉反轉換之訊號數量將依 Resolution 值倍增。

範例(Example)

本範例(Example)運用 Source 模組產生頻率 10,TimeLength 為 0.9sec 的 sinewave,與頻率 3;TimeLength 為 0.9 的 sine wave 相加的訊號,先以 Fourier Transform 計算出訊號之頻譜,調整 Resolution 與 Window 提高頻譜的辨視度,再將頻譜以 IFFT 反轉換計算出原來的訊號。

  1. 於 Network 視窗新增 Source / Sine 創造 sine wave,於 Properties 視窗 Name 欄位修改名稱為 Sine,freq=10,Signal frequency 預設即為 10 Hz,調整 TimeLength 欄位為 0.9sec。

  1. 再新增一 sine wave,並設定 Signal fnequency 為 3,TimeLength 為 0.9sec 的 sine wave,再新增 Compute / Math / Mixer 模組將兩訊號相加,並用 View / Channel Viewer繪出。

  1. 於 Mixer 圖示上選取 Compute / Transform / Fourier Transform,即可將該訊號作傅立葉轉換,用 Channel Viewer 將頻譜繪至左邊視窗。

由於頻率集中在 20 以下,而 Viewer 的 Properties 內的 Xmax 預設是500,因此將該欄位設為 30,以便於觀察頻譜。

  1. 經傅立葉轉換產生的頻譜圖,可辨視主要之頻率在 10Hz 與 3Hz 處,不過 3Hz 附近的 Magnitude 被低估,可能與訊號頻率過低有關,現在調整 Resolution 來改善頻譜。於 Project 1 點選 FFT 圖示,設定 Properties / Resolution 等於 5,結果如下:

    改變 Resolution 後, 3Hz 處之頻譜有明顯的改善,然而須留意改變 Resolution 後,FFT 輸出的資料長度也會隨之倍增,譬如本例輸入訊號長度為 901,經 FFT,預設 Resolution = 1 的時候,輸出長度為 451,Resolution = 5 時輸出長度則倍增五倍為 2255。

  1. 將 FFT 之 Resolution 調回 1,並在 FFT 圖示上點右鍵選擇 Compute / Transform / Inverse Fourier Transform,再用 Channel Viewer 輸出,即可得到原輸入訊號。

相關指令

Short-Term Fourier Transform,Haar Wavlet Transform。

參考

http://en.wikipedia.org/wiki/Fourier_transform

3.6.2 Discrete Cosine Transform and Inverse Cosine Transform

Discrete Cosine Transform ( 以下簡稱 DCT )離散餘弦轉換,可將訊號轉換為由 cosine 構成的序列,類似於作離散傅立葉轉換的實數部份;訊號轉換後大部份能量分佈於低頻處。其應用在音訊或影像方面的壓縮,以及求解偏微分方程的數值方法。

說明

常見的離散餘弦轉換可概分八種不同類型,本模組採用的是第二型。令代表長度為 N 之時間序列,則離散餘弦轉換定義如下:.

其反轉換定義如下:

參數設定(Properties)

本模組接受實數(real number),單通道(single channel)或多通道(multi-channel),regular的訊號(signal)、聲音訊號(audio)輸入;輸出格式為實數,單通道,regular的訊號(signal)。離散餘弦轉換其參數設定如下,反轉換則無設定參數。

參數名稱

參數定義

預設值

RemoveDC

消除訊號於振幅方向的平移量

Trde

Window

訊號於轉換前是否需加窗函數濾波,詳細說明可參閱FFT內容。

None

範例(Example)

本範例(Example)運用 Source 產生頻率 10、TimeLength 為 0.9 sec 的 sine wave 與頻率為 3Hz,TimeLength 為 0.9sec 的 sine wave 相加的訊號。先以 DCT 計算出訊號之頻譜,再將頻譜以 Inverse DCT 計算出原來的訊號。

  1. 於 Network 視窗新增 Source / Sine 創造 sine wave,於 Properties 視窗調整 TimeLength 欄位為 0.9 sec。

  1. 如上面步驟新增一 Signal frequency 為 3,TimeLength 為 0.9 sec 的 sine wave,再新增 Compute / Math / Mixer 將兩訊號相加,並用 Viewer / ChannelViewer 繪出。

  1. 對 Mixer 後的訊號作 Compute / Transform / Discrete Cosine Transform,並將結果用 Channel Viewer 繪出。圖上訊號頻譜集中在低頻處。

  1. 接著作 Compute / Transform / Inverse Cosine Transform,即轉換回原訊號。

相關指令

Fourier Transform,Channel Viewer

參考

http://en.wikipedia.org/wiki/Discrete_cosine_transform

3.6.3 HaarWavelet Transform

Haar Wavelet 是首先發表的小波函式,由 Alfréd Haar 所提出,小波理論也自此發展。Haar Wavelet 是最簡單的小波,但由於不是連續函數,所以作為基本小波,性能並不是特別好。但 Haar 小波是最簡單的正交小波,為二進小波變換的基礎,仍有其存在的價值。

說明

Haar Wavelet 小波理論的母小波可由以下函式表示:

而 Haar 的傅立葉變換為:

參數設定(Properties)

本模組接受實數(real number),單通道(single channel),regular的訊號(signal)、聲音訊號(audio)輸入;輸出格式為實數,多通道,regular的訊號(signal)。參數說明詳見下表。

參數名稱

參數定義

預設值

Filter Bank Level

正交基底數,從零開始。1是兩組基底,5是六組基底,以此類推。

1

Resampling Method

逼近方法,請參考 Resampling

Linear

範例(Examnle)

  1. 製造一個方波全採用預設值,再疊加上一 white noise 並設noise 振幅為 0.2。

  1. 將此混合後之訊號接上 Compute / Transform /Haar transform,並設定 Filter Bank level 為 3 :

明顯方波的特性集中在第四條,而在原方波不連續點處,第二與三條依然強烈地保留此跳躍特性,高頻雜訊大多集中在第一條。

  1. 將第二與第三訊號相乘,以縮小雜訊所造成的影響,再與第四條相加。

如此處理,可見雜訊被消除,原方波的特性被保留下來。

  1. 類似於 EMD,可將 HaarTransform 後的結果經由 Hilbert Spectrum 處理,即可看到時頻圖:

相關指令

Mixer,Multiplier,Fourier Transform,Hilbert Spectrum

參考

http://amath.colorado.edu/courses/4720/2000Spr/Labs/Haar/haar.html

3.6.4 Hilbert Transform

Hilbert transform 為對輸入訊號作折積(即 Convolution ),將一個實數的時間訊號轉換為一個複數平面上的解析訊號,而它的實部為輸入訊號,虛部則是對輸入訊號做折積後的部份,根據解析訊號的性質可定義出訊號瞬時的瞬時頻率、瞬時振幅,其應用在通訊系統及無線電訊號處理及分析上有相當不錯的成果。

說明

代表時間序列,則它的 Hilbert Transform定義為:

並定義一解析函數

其中為振幅(亦原訊號之包絡線),而為相角;在解析函數的極座標表示中,可進一步定義Hilbert Transform的瞬時頻率(instantaneous frequency):

除此之介紹外,可參考 Hilbert Spectrum。

參數設定(Properties)

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

Hilbert transform 的參數為 Output Type,設定轉換結果呈現的格式,選項有 Complex、Split Complex、Unwrapped Phase、InstantFrequency 與 Instant Amplitude 等,其中 InstantFrequency 演算上可分為 Simple 法 與 Barne 法,各選項之意義詳見下表說明。

選項名稱

意義

Complex

輸出解析訊號Z,資料儲存為複數。

SplitComplex

將解析訊號 Z 的實部 X 與虛部 Y 分作兩個通道,儲存其數值大小。

UnwrappedPhase

解析訊號Z的相位角對應各時間點的值(unwrapped意為過360度後不規零)。

InstantAmplitude

解析訊號Z的振幅對應各時間點的值。

InstantFrequency

解析訊號Z的相位角對時間的微分,既瞬時頻率

範例(Example)

本範例用 Source 模組產生一個 sine wave 訊號,直接作 Hilbert Transform,並藉調整 Hilbert transform 的 Output Type 以瞭解各參數項之意義。

  1. 先用 Source / Sine Wave 產生 sine wave,用 Viewer / ChannelViewer 繪出訊號,再於 Sine 圖示點選 Compute / Transform / Hilbert Transform 直接作計算,Output Type 預設為 Complex,用 Viewer / Channel Viewer 繪出結果。(須注意輸出訊號是複數,而 Channel Viewer 的 Properties / YValueType 預設是 Magnitude,因此在 Viewer 上畫的是輸出訊號的 Magnitude )。

若將 Sine 與Hilbert Spectrum 輸出者畫在同一個 Channel Viewer上,可見確實為原訊號之包絡線。

)

  1. 對訊號源 Sine 再作一次 Hilbert Transform,將 Properties 內 Hilbert / Output Type調整為 Split Complex,這樣 Hilbert Transform 會把實、虛部分為兩個通道,用 Viewer / Channel Viewer 即繪出實部與虛部的值,其中黑線為實部,藍線為虛部,可看到虛部為實部對相位角作 90∘的相位偏移 ( phase shift )。

  1. 重覆步驟 2 的作法,僅改變 Output Type 為 InstantFrequency,圖示名稱也改為 Instant Frequency,結果為輸入訊號在每個時間點上的瞬間頻率。

  1. Channel Viewer 不能繪出解析函數 Z(t) 在複數平面的圖型,必需使用 Viewer / XYPlot 的功能。將 Split Complex 的輸出用 Viewer / XYPlot 即可繪出解析函數 Z(t) 在複數平面的圖型,改變 XYPlot 的 ViewerWidth 與 ViewerHeight 為相等的數值(如 350 ),就能使 XY 軸的比例一樣。

相關指令

XYPlot,Hilbert Spectrum。

參考

http://en.wikipedia.org/wiki/Hilbert_transform

3.6.5 AutoCorrelation

自我相關性就是一個時間訊號與它自身作折積 ( Convolution ),以作為相關性分析之依據,自我相關性分析可瞭解一個訊號在時間尺度上改變的有多快,及觀察訊號是否有週期性的變化。

說明

自相關的的解析定義為:

,其中之共軛,為訊號之週期,為時間延遲。

在離散化的情況下,令代表長度為N之時間序列,相關公式為:

而在,等同均方值

參數設定(Properties)

本模組接受實數(real number),單通道(single channel),regular的訊號(signal)、聲音訊號(audio)輸入;輸出訊號格式為實數,單通道,regular的訊號。本模組無其它的參數設定。

範例(Example)

本範例分別對 sine wave 與一個 white noise 訊號作自我相關分析,再以兩輸入訊號混合後之訊號作自我相關分析。

  1. 於 Network 新增一個 Source / Sine Wave,Properties /DataLength 改為 2 sec,訊號頻率為 10Hz 不變,以此訊號作 Compute / transform / AutoCorrelation ,並用 Viewer / Channel Viewer 繪出結果。

  1. 上圖即為 sine wave 在不同延遲(既原式中的)下之自我的相關性,對 AutoCorr 的輸出作 FFT,可發現 AutoCorr 的輸出訊號其頻率也等於 10,驗證對一個週期性訊號作自我相關轉換,則結果保有與輸入訊號同樣的頻率。

  1. 創造一個 White noise,再重複步驟1前半部份的作法,結果如下。

  1. 以 Compute / Channel / Mixer 將 Sine 與 Noise 混合後作自我相關分析,可得到下面的結果:

相關指令

Cross Correlation,Mixer。

參考

http://en.wikipedia.org/wiki/Autocorrelation

3.6.6 CrossCorrelation

CrossCorrelation,交互關聯是將一時間訊號與另一時間訊號作旋積 ( Convolution ),以作為相關性分析之依據;通常將不了解的訊號與一已知性質的訊號作交叉相關分析,藉此探求該訊號之特性。

說明

CrossCorrelation 之解析數學定義為:

為時間延遲項。

在離散數列的情況下,假設在延遲為的交互關聯定義為:

交叉相關轉換結果訊號長度為 N+M-1,不具對稱性,其最大值遵守下述的不等式:

若對兩輸入訊號在統計上來說是兩獨立事件,則;若是分析訊號對自身的相關性,計算,此分析即為Auto Correlation。

參數設定(Properties)

本模組接受實數(real number),單通道(single channel),regular的訊號(signal)、聲音訊號(audio)輸入,且須有兩個輸入訊號;輸出訊號格式為實數,單通道,regular的訊號。輸入兩個訊號長(可以不一樣,不過限制是兩訊號的取樣頻率與時間單位必須一樣。

範例(Example)

先產生一組white noise 作原訊號,截取其中一段資料,產生另一個雜訊合成出第二組訊號,以這兩組訊號作 Cross Correlation 觀察兩者間關係。

  1. 產生一個 Source / Noise,Properties / TimeLength改為 5 sec,再用 Viewer / Channel Viewer 繪出。

  1. 點選 Noise,按右鍵選擇 Compute / Channel / Data Selection,於 Properties / EndPosition欄改為 3.5,然後接著連上 Compute / Channel / Time Shift,Properties / Shift Value 設為 -1.5,目的為將原訊號 0 ~ 3.5 秒的資料移至新訊號 1.5 ~ 5 秒處。

  1. 再產生一組 TimeLength 為 1.5 sec的 Noise,將此 noise 與 Time Shift 後的訊號作 Compute / Channel / Mixer 形成第二個訊號源,再以 Channel Viewer 繪出。

  1. 將訊號 Noise 與 Mixer 一起作 Cross Correlation,再用 Channel Viewer 繪出結果。

上圖代表輸入訊號 1 與訊號2 在時間點為 -1.5 sec 時有很強的相關性,基本上第二個輸入訊號在 1.5 sec 至 5 sec 的資料與第一個輸入訊號 0 sec 至 3.5 sec 的資料是完全一樣的,此結果符合兩輸入訊號的特性。

相關指令

Auto Correlation,Data Selection,Mixer,Time Shift。

3.6.7 MSE

MSE是Multiscale Entropy(多尺度熵)之縮寫,是分析系統的時間序列的複雜度。複雜度越高代表系統愈健康。此法可應用於分析生物(biological)、地球科學(earth science)及機械振動(mechanical vibration)的訊號。

此複雜度的意義與傳統熵 (Entropy) 值有所不同;在傳統熵值觀念中若系統愈規則熵值愈低反之系統愈混亂熵值愈高。在新的観念中,複雜度愈高代表系統愈健康(在此高低是相對量),系統太規則或系統太混亂都是不健康的狀況(因為此時複雜度較健康系統低)。將每個尺度的時間序列,計算出對應的熵值,即為多尺度訊號熵分析,訊號的複雜度則展現在多種尺度下熵值的變化。

本模組中熵的計算的採用 Sample Entropy。它改進了 Approximate Entropy;更具體的說,它比 Approximate Entropy 所需的資料量更短。

多尺度的概念,假設尺度(scale)為則該尺度下之時間序列經定義表示為 :

數列中每個點即為每尺度內之平均數。對於每個尺度計算 Sample Entropy :

在上式中,表式滿足其中 d 是為歐幾里德幾何學中的距離函數 :

參數設定(Properties)

本模組接受實數(real number),單通道(single channel)或多通道(multi-channel),regular的訊號(signal)、聲音訊號(audio)輸入;輸出訊號格式為實數,單通道或多通道,regular的訊號。參數說明詳見下表。

參數名稱

參數定義

預設值

MinScale

最小尺度。作多尺度分析時設定尺度縮放之下限值

1

MaxScale

最大尺度。作多尺度分析時設定尺度縮放之上限值

20

ScaleStep

尺度步長,於尺度上限以下取一步幅長,依此步幅長遞增(減)尺度至最大(小)尺度。

預設值=1

MatchPoint

設定比較相似度之數列長度

2

MatchTolerance

判斷相似度所設定的容忍誤差值,即原式中的 r

0.15

範例(Example)

本範例針對人體生理訊號為分析:

  1. 於Project 視窗下,載入兩筆資料,分別為年輕人及老年人站立時的 Center of Pressure (COP),在 X 方向隨時間的變化,利用 Viewer / Channel Viewer 觀察結果。

  1. 為了解保持身體平衡的能力,再將其原始訊號經過微分,得到 COP 的速度變化,如下圖。

  1. 最後將兩速度訊號經過 Compute / Transform / MSE 計算,利用 Viewer / Channel Viewer 觀察結果,發現年長者平衡感較差,COP 之改變較無彈性,是故熵隨尺度變大而衰減;而年輕人平衡感好,COP 移動靈活,熵幾不隨尺度而改變。

  1. 再討論另一個例子,18 歲健康年輕人及 55 歲健康中年人,分別量取其 ECG,ECG 結果如下圖顯示。

  1. 分別將兩個人的 ECG 分別計算出兩心跳間的時距,即所謂的 RRinterval ,最後利用 MSE 計算,其結果如下圖。並可以解釋年輕人的 ECG 與中年人的 ECG 作比較,年輕人的訊號複雜度較中年人來的高,年輕人心臟比較能應付外在各種變化,並進行調節心臟跳動。

相關指令

Noise,Viewer。

參考資料

1. Pincus, S. M., Approximate entropy as a measure of system complexity, Proceedings of the NationalAcademy ofSciences, USA, Vol. 88, pp. 2297-2301 (1991).

2. Costa M., Goldberger A.L., Peng C.-K. Multiscale entropy analysis of physiologic time series. Phys Rev Lett 2002; 89:062102.

3. Costa M, Peng C-K, Goldberger AL, Hausdorff JM. Multiscale entropy analysis of human gait dynaiics. Physica A ,2003;330:53-60.

4. Costa M., Goldberger A.L., Peng C.-K. Multiscale entropy analysis of biological signals. Phys Rev E 2005;71:021906.