睡眠分期matlab代码,非接触式睡眠分期方法与流程
本發明屬于雷達監測技術領域,特別是一種非接觸式睡眠分期方法。
背景技術:
傳統的呼吸睡眠監護系統主要依靠貼附于人體的接觸式傳感器、電極進行測量,從而實時獲得人體的生命參數信號,這些方法都需要直接或間接地接觸人體,這種接觸式測量大大制約了其應用范圍,并且電極的接觸也對生命體特征信息造成一定的影響,影響其檢測的準確度,并給生命體特征信息的處理帶來壓力。
現有的呼吸睡眠監護系統需要電極或傳感器接觸生命體,無法在較遠的距離內探測到生命體的生命信號(呼吸、心率等),對于有睡眠呼吸暫停的病人、剛出生的嬰兒、某些有睡眠障礙的人,無法監測他們的睡眠狀態以對可能出現的突發狀況作出預判。
技術實現要素:
本發明的目的在于提供一種安全性高、準確性強的非接觸式睡眠分期方法,以方便醫務人員根據病人的實際睡眠情況及時采取治療措施。
實現本發明目的的技術解決方案為:一種非接觸式睡眠分期方法,步驟如下:
步驟1,將雷達回波信號進行濾波,分別得到呼吸信號和心跳信號;
步驟2,根據呼吸信號得到每分鐘呼吸次數即RPM、每分鐘呼吸次數的方差即RPM Variance,根據心跳信號得到每分鐘心跳次數即BPM、每分鐘心跳次數的方差即BPM Variance,根據呼吸信號得到體動信號;
步驟3,將步驟2所得的RPM、RPM Variance,BPM、BPM Variance、體動信號分別進行聚類分析;
步驟4,根據聲音信號、視頻信號、以及步驟3聚類分析所得信號對睡眠狀態進行劃分,得到睡眠狀態的劃分結果。
進一步地,步驟1所述將雷達回波信號進行濾波,分別得到呼吸信號和心跳信號,具體如下:
(1.1)運用帶通濾波器對雷達回波信號進行濾波,得到呼吸信號;
(1.2)在原始雷達回波信號中,剔除所得呼吸信號,得到心跳信號。
進一步地,步驟2所述根據呼吸信號得到每分鐘呼吸次數即RPM、每分鐘呼吸次數的方差即RPM Variance,根據心跳信號得到每分鐘心跳次數即BPM、每分鐘心跳次數的方差即BPM Variance,根據呼吸信號得到體動信號,具體如下:
(2.1)根據呼吸信號得到每分鐘呼吸次數即RPM、每分鐘呼吸次數的方差即RPM Variance:將呼吸信號的波谷點全部用星號標注出來,求波谷數得到RPM;利用所得的RPM先求出平均值,再對RPM求方差得出RPM Variance;
(2.2)根據心跳信號得到每分鐘心跳次數即BPM、每分鐘心跳次數的方差即BPM Variance:將心跳信號的波谷點全部用星號標注出來,求波谷數得到BPM;利用所得的BPM先求出平均值,再對BPM求方差得出BPM Variance;
(2.3)根據呼吸信號得到體動信號:首先將高于呼吸信號峰值兩倍的數據點儲存下來記為Movement,再計算每分鐘高于呼吸峰值兩倍的數據點個數,記為Movement_count,當Movement_count大于預設的閾值時,認為該分鐘內發生了體動,將Movement中幅值最大的信號點儲存下來得到體動信號。
進一步地,步驟3所述將步驟2所得的RPM、RPM Variance,BPM、BPM Variance、體動信號分別進行聚類分析,其中聚類分析具體如下:
(3.1)定義信號的數據點集合X={x1,x2...xn},聚類中心的集合C={c1,c2,...,cn},定義閾值ε的范圍為10-3≤ε≤10-5;
(3.2)隨機初始化聚類中心集合C;
(3.3)計算目標函數值k表示數據分類個數,p≥2表示模糊指數,l表示此次迭代次序,j=1,2,…,k,i=1,2,…,n;
(3.4)計算第i個數據點xi到第j個聚類中心cj的隸屬度∪(cj/xi):
(3.5)計算每個數據點的權重w(xi):
(3.6)根據數據點的隸屬度∪(cj/xi)和權重w(xi)更新聚類中心cj,公式如下:
(3.7)如果||KHMl+1-KHMl||<ε,則計算停止,輸出優化后的信號;否則轉回步驟(3.3)。
進一步地,步驟4所述根據聲音信號、視頻信號、以及步驟3聚類分析所得信號對睡眠狀態進行劃分,得到睡眠狀態的劃分結果,具體如下:
(4.1)固定時間內,RPM、BPM小于等于均值、波動不超過預定次數且該段時間內沒有體動發生,定義為深度睡眠;
(4.2)固定時間內,RPM、BPM大于等于均值,并且RPM Variance、BPM Variance大于峰值的一半,該段時間定義為REM睡眠;剩下的狀態定義為淺度睡眠;
(4.3)根據聲音信號、視頻信號,檢驗雷達檢測到的體動處是否真實發生了體動。
進一步地,步驟(2.1)所述將呼吸信號的波谷點全部用星號標注出來,求波谷數得到RPM,其中波谷檢測RPM時,將相鄰的波谷時間小于平均呼吸周期一半的波谷舍去。
進一步地,步驟(2.2)所述將心跳信號的波谷點全部用星號標注出來,求波谷數得到BPM,其中波谷檢測BPM時,將相鄰的波谷時間小于平均心跳周期一半的波谷舍去。
本發明與現有技術相比,其顯著優點在于:(1)融合雷達技術、生物醫學工程技術于一體,不需要任何電極或傳感器接觸生命體,可在較遠的距離內探測到生命體的生命信號;(2)對于有睡眠呼吸暫停的病人、剛出生的嬰兒、某些有睡眠障礙的人,能夠監測他們的睡眠狀態以對突發狀況作出預判;(3)具有高安全性、高準確性、小型化和智能化的優點,方便醫務人員實時、連續掌握病人的狀況,及時采取治療措施。
附圖說明
圖1為本發明非接觸式睡眠分期方法的流程圖。
圖2為本發明中呼吸波形圖。
圖3為本發明的心跳波形圖。
圖4為本發明的RPM的波形圖。
圖5為本發明的RPM Variance的波形圖。
圖6為本發明的BPM的波形圖。
圖7為本發明的BPM Variance的波形圖。
圖8為本發明的體動信號波形圖。
圖9為本發明的睡眠狀態分期圖。
圖10為本發明的RPM、BPM、RPM Variance、BPM Variance、體動信號、睡眠狀態分期圖。
具體實施方式
下面結合附圖對本發明作進一步詳細描述。
本發明基于連續波生物雷達的非接觸生命體特征信息監測系統融合雷達技術、生物醫學工程技術于一體,不需要任何電極或傳感器接觸生命體,可在較遠的距離內探測到生命體的生命信號(呼吸、心率等),對于有睡眠呼吸暫停的病人、剛出生的嬰兒、某些有睡眠障礙的人,監測自己的睡眠狀態有利于了解自己的身體狀況,對可能出現的突發狀況作出預判。
一種非接觸式睡眠分期方法,步驟如下:
步驟1,將雷達回波信號進行濾波,分別得到呼吸信號和心跳信號;具體如下:
(1.1)運用帶通濾波器對雷達回波信號進行濾波,得到呼吸信號,如圖1所示。
(1.2)在原始雷達回波信號中,剔除所得呼吸信號,得到心跳信號,如圖2所示。
步驟2,根據呼吸信號得到每分鐘呼吸次數即RPM、每分鐘呼吸次數的方差即RPM Variance,根據心跳信號得到每分鐘心跳次數即BPM、每分鐘心跳次數的方差即BPM Variance,根據呼吸信號得到體動信號,具體如下:
(2.1)根據呼吸信號得到每分鐘呼吸次數即RPM、每分鐘呼吸次數的方差即RPM Variance:將呼吸信號的波谷點全部用星號標注出來,求波谷數得到RPM;利用所得的RPM先求出平均值,再對RPM求方差得出RPM Variance;
步驟(2.1)所述將呼吸信號的波谷點全部用星號標注出來,求波谷數得到RPM,其中波谷檢測RPM時,將相鄰的波谷時間小于平均呼吸周期一半的波谷舍去。
(2.2)根據心跳信號得到每分鐘心跳次數即BPM、每分鐘心跳次數的方差即BPM Variance:將心跳信號的波谷點全部用星號標注出來,求波谷數得到BPM;利用所得的BPM先求出平均值,再對BPM求方差得出BPM Variance;
步驟(2.2)所述將心跳信號的波谷點全部用星號標注出來,求波谷數得到BPM,其中波谷檢測BPM時,將相鄰的波谷時間小于平均心跳周期一半的波谷舍去。
(2.3)根據呼吸信號得到體動信號:首先將高于呼吸信號峰值兩倍的數據點儲存下來記為Movement,再計算每分鐘高于呼吸峰值兩倍的數據點個數,記為Movement_count,當Movement_count大于預設的閾值時,認為該分鐘內發生了體動,將Movement中幅值最大的信號點儲存下來得到體動信號。
步驟3,將步驟2所得的RPM、RPM Variance,BPM、BPM Variance、體動信號分別進行聚類分析,其中聚類分析具體如下:
(3.1)定義信號的數據點集合X={x1,x2...xn},聚類中心的集合C={c1,c2,...,cn},定義閾值ε的范圍為10-3≤ε≤10-5;
(3.2)隨機初始化聚類中心集合C;
(3.3)計算目標函數值k表示數據分類個數,p≥2表示模糊指數,l表示此次迭代次序,j=1,2,…,k,i=1,2,…,n;
(3.4)計算第i個數據點xi到第j個聚類中心cj的隸屬度∪(cj/xi):
(3.5)計算每個數據點的權重w(xi):
(3.6)根據數據點的隸屬度∪(cj/xi)和權重w(xi)更新聚類中心cj,公式如下:
(3.7)如果||KHMl+1-KHMl||<ε,則計算停止,輸出優化后的信號;否則轉回步驟(3.3)。
步驟4,根據聲音信號、視頻信號、以及步驟3聚類分析所得信號對睡眠狀態進行劃分,得到睡眠狀態的劃分結果,具體如下:
(4.1)固定時間內,RPM、BPM小于等于均值、波動不超過預定次數且該段時間內沒有體動發生,定義為深度睡眠;
(4.2)固定時間內,RPM、BPM大于等于均值,并且RPM Variance、BPM Variance大于峰值的一半,該段時間定義為REM睡眠;剩下的狀態定義為淺度睡眠;
(4.3)根據聲音信號、視頻信號,檢驗雷達檢測到的體動處是否真實發生了體動。
經過步驟(2.1),將呼吸信號的波谷點全部用星號標注出來,相鄰的谷值時間差小于1.67s的谷值舍去,求波谷數得到RPM,得出圖4,利用所得的RPM,先求出平均值,再對RPM求方差得出RPM Variance,得出圖5。
經過步驟(2.2),將心跳信號的波谷點全部用星號標注出來,相鄰的谷值時間差小于0.5s的谷值舍去,求波谷數得到BPM,如圖6所示利用所得的BPM,先求出平均值,再對BPM求方差得出BPM Variance,如圖7所示。
經過步驟(2.3),將高于呼吸峰值兩倍的數據點儲存下了記為Movement,再計算每分鐘高于呼吸峰值兩倍的數據點個數,記為Movement_count,當Movement_count大于一個閾值時,認為這分鐘發生了體動,將Movement中幅值最大的信號點儲存下來,得到體動信號,如圖8所示。
經過步驟(4.1),在RPM、BPM小于等于均值,在一段時間內RPM、BPM波動不超過3次且這段時間內沒有體動發生,得出深度睡眠期。
經過步驟(4.2),在RPM、BPM大于等于均值,而且RPM Variance、BPM Variance大于峰值的一半,得出睡眠的REM期,剩下的狀態定義為淺度睡眠期。
經過步驟(4.3),利用視頻和音頻信號對體動信號進行檢驗,得到圖9,睡眠狀態分期圖。圖10為本發明的RPM、BPM、RPM Variance、BPM Variance、體動信號、睡眠狀態分期圖。
總結
以上是生活随笔為你收集整理的睡眠分期matlab代码,非接触式睡眠分期方法与流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【算法动画图解】:安利一款昨天发现的ap
- 下一篇: 优秀的长截图标注工具:iShot for