• 沒有找到結果。

本章節將探討第二章所提出的短時 Goertzel 演算法的效能表現,還有 在第三章特徵偵測演算法與各自原本的演算法的偵測結果比較。

4-1 效能分析:短時 Goertzel 演算法

以下為短時 Goertzel 演算法的效能分析的結果,與其比較的演算法有:

Goertzel 演算法、快速傅立葉轉換(FFT)、短時版本的快速傅立葉轉換(FFT-st)

(非用於時頻分析的 STFT)。

這部份實作的原始碼已公佈在 Github 上,讀者可以到此網址查看更詳細 的內容:https://github.com/NaleRaphael/goertzel_fft

效能分析使用的資料點數為 1233600,將其分割為 100 等份,而分析的 頻率有 50Hz 與 60Hz,共兩個數值。每增加一等份的資料量時,會重覆執行 5 次運算,以計算平均耗時。而資料又分別以整數與浮點數兩種型態進行測 試,分析結果分別為圖 4-1 與 4-2。其中 stft、goertzel-st 與 goertzel-st-m 表示 為短時版本的演算法,而 goertzel-m 與 goertzel-st-m 則表示是可以一次輸入 多個目標頻率的版本。

對於兩種資料型態的處理,短時版本的 FFT 處理速度確實都比原始的 FFT 快約 5 倍左右;而 4 種 Goerztel 演算法全都比短時版本的 FFT 快將近 2 倍。但是,在只有分析兩種頻率的情況下,無論是對於整數或浮點數的資料,

短時版本的 Goertzel 演算法並沒有比原始版本的 Goertzel 演算法還要快。

雖然如此,但是從實務上用來分析電力線干擾為 50Hz 或 60Hz 的情況 來看,當短時版本的 Goertzel 演算法將頻率解析度調為 1 時,只要分析 50Hz 與 60Hz 這兩點;而原始的 Goertzel 演算法要分析的點卻會隨著資料長度增

(a)

(b)

圖 4-1. 效能分析(int-32bits)

(a)

(b)

圖 4-2. 效能分析(float-32bits)

4-2 結果討論:QRS 波群偵測

 偵測結果

由於 Pan-Tompkins 演算法無法處理有受到電極接觸雜訊干擾的訊號,因 此本研究是以在 3-1 節所提出的流程(圖 3-1)來處理。以下是 Pan-Tompkins 演算法與本研究提出的演算法的偵測結果比較:

(a)

(b)

圖 4-3. 偵測結果比較(平坦線)

(a)

(b)

圖 4-4. 偵測結果比較(暫態峰)

 初始化問題

3-1-1 節提到 Pan-Tompkins 演算法的閥值過濾部分,當前兩秒的訊號的 起伏不夠大時,會使得閥值初始化的結果不合理。假設 SIG_MAI2sec = X,以 極端情況來說,X 為直流訊號時,會使得 max(X)與 mean(X)相等,以 c 表 示。對照(3-4)式中各項閥值的關係式,此時

THR_I1max(X)/3c/3

THR_I2mean(X)/2c/2 (4-1) THR_I1<THR_I2

實際上,max(X)應該至少要大於 3/2 倍的 mean(X),才可以使後續的偵測流 程正常運作。

但因為在實作上因為浮點數型態的關係,濾波結果雖然極為接近 0,但 在非常小的數量級上,仍是非 0 的數字。而且 X 的各點數值也不相同,因此 max(X)與 mean(X)雖然接近但仍不同。所以實作上並沒有因為這樣的設計讓

初始化失敗。

 閥值更新問題

另外,在 3-1-1 節說明閥值過濾演算法的部分時,提到某些標記雖然已 經通過雙重的驗證,但仍有可能不是真正的 R 波。

這是因為 Pan-Tompkins 演算法在閥值過濾的設計上,傾向把較高振幅的 資料點視為正常的 R 波,這個現象可以從圖 3-5 的步驟(6)看出,該判斷式僅 能過濾低於閥值的資料點,對於數值過高的資料點是無法區別的。因此,Pan-Tompkins 演算法遇到受電極接觸雜訊干擾的訊號時,常會因為誤把過高振 幅的雜訊當作是正常資料點,進而過度拉高閥值,使得後續的資料點都無法 被正常判斷,如下圖 4-5 到 4-7 所示

圖 4-5. 受電極接觸雜訊干擾的訊號

圖 4-6. 被過度拉高的閥值

圖 4-7. 因過高閥值無法恢復的偵測結果

因此,本研究在第二章就提出處理電極接觸雜訊的演算法,以避免這種 情況發生。經過 2-2 節所提出的演算法與 Pan-Tompkins 演算法配合後,偵測 結果如下圖所示

圖 4-8. 電極接觸雜訊處理與 Pan-Tompkins 演算法配合的結果

 誤判 R 波的處理

但是與電極接觸雜訊相比,VPC 的振幅高度並沒有遠大於 R 波,2-2 節 提到的電極接觸雜訊處理並無法幫助 Pan-Tompkins 演算法區別 VPC 與 R 波。所以,在 3-1-2 節提到使用 k-means 分群演算法來處理,改進的結果如 下圖 4-9 與 4-10 所示。(圖 4-10 中的 NR 表示非 R 波)

圖 4-9. 因 VPC 而產生的錯誤判斷

圖 4-10. 經 k-means 分群演算法處理後

4-3 結果討論:P、T 波偵測

根據 3-2-1 節最後提到 Elgendi 演算法的問題,本研究提出 3-2-2 節所述 的方法來解決,改進的結果如下圖所示

圖 4-11. 心律產生器的心跳的偵測結果(對照圖 3-10)

圖 4-12. 心房顫動的偵測結果(對照圖 3-11)

以目前的處理結果來看,在 3-2-2 節提出的方法對於心律產生器的心跳 有不錯的表現;然而對於心房顫動的處理還有待加強。在圖 4-12 中,紅框所 標出的兩個 RR 區間,在經過 3-2-2 節的方法處理後,仍然無法被辨識為有 異常的 RR 區間。在檢查計算 kRPT(P、T 波中最低者與平均 R 高的比例)的 結果時,發現該兩個區間的 kRPT > 0.1,因此無法被辨識為異常區間。(見圖 4-13)

圖 4-13. 心房顫動資料中異常區間的濾波與曲線擬合結果

而關於倒置 P 波,目前本研究提出的方法並無法解決。(見圖 4-14)在 檢查定義感興趣區間(BOI)的流程後,發現 BOI 無法將倒置 P 波框選起來,

反而只能被定義在倒置 P 波的兩側。(見圖 4-15 紅框處)

圖 4-14. 倒置 P 波的偵測結果(對照圖 3-12)

圖 4-15. 對倒置 P 波定義感興趣區間(BOI)的結果(對照圖 3-12)

而造成圖 4-15 這種問題的原因,在於對 BOI 的定義。以(3-24)式來說,

BOI 只會被定義在當 ma_sig1>ma_sig2 的時候。而對於倒置 P 波,該區段則 必定為 ma_sig1<ma_sig2,因此 BOI 根本無法將其框選起來。

相關文件