波形寬度計算

小弟這有一筆EKG訊號數據

想自動計算個波的寬度

試著用內建程式去改

座標卻都無法達到我要的位置

煩請各位先進指教

test20100906-1700-3.3.txt

自動區間.vi

你應該是要找ekg的r點

建議你可以去翻翻看有沒有r波偵測的相關論文

您好我是要計算PQRST一個cycle的時間

及p波到s波的時間謝謝

當然RR INTERVAL 也是接下來要做的步驟

你指的"座標卻都無法達到我要的位置"是說Cursors點選的位置無法精準的到你要的座標嗎?那是因為你選錯模式,你要選單線模式(Single-plot),來指定Cursors要精準的在哪條線(Plot0)上.

![](upload://u0NRXAYVUwpa35IIjVRYwdWPVyv.jpeg)

![](upload://2mgqcWYc8KPK4JditnP2K7nsnDw.jpeg)

你用了10個Cursors如果都要精準的在線上,都要一一的設定.

再建議你將Cursor Legend開啟,方便選擇要控制的Cursors,也可直接寸動控制所選的Cursors上下左右(單線模式只接受左右控制).

![](upload://mW1023mE1993yLqik6WgM0jD55S.jpeg)

![](upload://kidCXHs7c1x2zM4TUk8I6OLxbcJ.jpeg)

前輩您好您所指出的這段話

"你要選單線模式(Single-plot),來指定Cursors要精準的在哪條線(Plot0)上."

不太懂您的意思

因為我試著去更動電是他不給改

小弟的目標是要讓它自動量取

線段藍綠的數值

因為每次訊號的位置都會在不同地方

 

 

因為我沒有其他子VI所以無法執行你的程式,無法了解程是如何自動取量?我只能建議在圖形上按右鍵進入Properties,將所有的Cursors改成Single-plot試試看.

![](upload://esinlKXrZSFSGrj0y0fVGh7CIKp.jpeg)

![](upload://iPbKdXryIF8Z95eZWcg2AD3F7iS.jpeg)

![](upload://5UfrpEZbpwLi9oNK1ZbrcHlPXFv.jpeg)

![](upload://oWJVYkbfJEdqhyxei7hxoVSP2Mj.jpeg)

ECG的判斷說好寫很好寫
判斷的好卻又很難

我以前是這樣抓PQRST的:

1. 確認R點位置
2. 以R點位置前後間距取得QRS波(距離可用書上寫的時間轉成秒數點數來取)
3. 以R點位置前後間距取得整個波形(每個人可能有不同,可利用RR interval來判斷波形長度進而取得PQRST)

BTW,
若不是這個波形是有病灶的波形,
就是你的波形失真的太嚴重,
可能硬體或軟體的濾波器做的不好。

回覆DonWang
謝謝不過更動後還是沒什麼幫助

回覆caeru

我想波型應該沒什麼大問題

只是它變動因素太多很難以擷取

您所提到的用"
3. 以R點位置前後間距取得整個波形(每個人可能有不同,可利用RR interval來判斷波形長度進而取得PQRST)

可以在細說一下嗎 謝謝!!

因為我是用307200點來解析這30秒內的圖形

 

先來看一下一般的心電圖,
by MIT-BIH PhysioNet Databases


每一條藍色皆為R點位置,
取得R點與R點之間的長度,即可視為一個心跳的長度
再向左偏移1/3~1/2個波形週期(因人而異),
則取出來的即可視為一個完整的心跳週期

取得完整的心跳周期之後
才能開始計算你需要的Q-S以及Q-T間期
所以如何取得完整的心跳週期是重要的課題
建議你先能夠把心跳週期切割出來之後再進行接下來的工作

此外你的取樣頻率可以不用這麼高,
一般學術上使用的大概為250Hz
老闆要求高一點的可以用到1000Hz
沒有必要用到10KHz
這樣只會增加不必要的雜訊以及計算



先謝謝caeru的提點

我由您提供由RR的方向思考

重新撰寫另一套方式來判讀

我直接由array來下手

但是有一點目前寫到卡住我可得到最大值和其對應的時間及點

我想往右做delta的時間累加和累減到剛好在x軸為零的那一點

應該可以得到我要的所在點的時間

目前卡在這裡

附上我寫的部份程式Untitled 1.vi

ps您所提到的取樣頻率因為還需做其他事才取這麼高

你要找的應該是Y軸為0的點,但是並沒有Y=0的點,所以我建議的做法找到最高點(0~1秒鐘的),再往左往右找第1個小於等於的值,就應該是你要找的藍色的範圍,下面程式給你參考.

有1點想請教你為什麼要將所有的值減去平均值(圖2紅圈處),意義何在?

1105.vi

![](upload://7hp5WCyCS6uPLR0tnxNejQ2R8Hq.jpeg)

![](upload://2LKHjpgRHlQHcikYeqtkK8VlExA.jpeg)

謝謝DonWang大的幫忙

回答您的問題那是因為我訊號進來後不一定會在x軸等於0的位置

我把它平移到我要的位置而已

再請教一下如果我要第三點(藍色那點)的xy值

且他每筆資料未必會在x=0軸上

我該如何思考去寫呢

謝謝!!

![](upload://hvqoFz2wT6PjryH861moRgMCpko.jpeg)

那1點大約在0.86~0.87,你要取的是最低點嗎?因為不了解這點的定義,不知如何取點.

![](upload://AginYgaGSJE8gURQqVYu6MzK2Xy.jpeg)

波形要經過濾波在求會比較好…
不然出來的結果誤差有時候也是會影響實驗結果的
可以嘗試濾1Hz以下55Hz以上
這樣對判斷來說也會有很大的幫助

不過濾波階數太高
要注意相位偏差的問題就是

先找出紅圈的那2點,然後在這範圍中找最低點(藍圈X=0.865918),或在紅圈往右往左找第1個低於0的點,將2點取平均X=0.8635255.

![](upload://zDiaCtw2IAoNTDdI0utG9C7Sm21.jpeg)

to DonWang

波形的最大值並非一定是擷取的最大值喔
因為那個有可能是雜訊所造成的
同樣的最小值也未必是擷取的最小值
還是得依照該波形的特徵去判斷
甚至需要濾波之後再去求得極值才會比較準確

to <span =“bold”>911gt2

這個T波還真特別,後面跟的那個是下一個的P波還是傳說中的U波?
BTW,
T波後面的結尾算是好求了
一般學術上的算法是利用斜率的變化 << 這是重點
即:
QR interval是很大的正斜率
RS interval是很大的負斜率
ST-U interval是由正轉負又變成趨近0的斜率

以你這個特例而言
只需要找到T波之後斜率由負轉正的點就是了

老話一句
求特徵點的時候務必要做濾波
求得位置後再依照相位偏移去做補償(如果濾波器沒有很高階的話是可以忽略)
求出來的特徵點才是對的
而非直接去判斷原始訊號
那實驗出來的特徵點以及特徵值
其誤差會嚴重影響統計上的意義

補充一下
一般斜率可以用這個公式
S(x)=a(V(x)-V(x-1))+b(V(x+1)-V(x))
其中a,b為權重
S(x)為第X點的斜率
V(x)為第X點的值

大概就是這樣
如果不是搞學術我想可以不要那麼複雜
但是你取樣率高又有特別意義的話
我覺得謹慎點會比較好


caeru40491.7632291667

to caeru
先謝謝您的教導老實說我碰這類東西沒幾個禮拜

大部分都還在摸索狀態,另外您所提到的t波後還有一個波

是瓣膜關閉的效應會產生一個回波

主要量測整個PORST的大概值不需要非常精確

另外我聽從您的建議加個濾波器

主要還是卡在判斷式不夠熟捻

附上我的程式Untitled 1.1.vi

為何判斷出來還是在原本的X=1&2位置

TO DonWang
也謝謝您的回覆

我想法也是在兩個小波中尋最小值

但是我不知道如何只擷取兩個波的array

 

因為你找的還是index 0~9416的位置,所以找不到你要的第3,4點.我改的程式給你參考:

找第3點的方式:從index 9639後1536筆資料(0.15秒),找最大值.

找第4點的方式:從第3點的index後1024筆資料(0.1秒),找最小值.

 

1110.vi

![](upload://rISducNKZ5Go0sUTflhh9hRiz6C.jpeg)