日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

心电信号的PQRST模拟matlab代码(转载+自己调研汇总)

發布時間:2023/12/31 循环神经网络 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 心电信号的PQRST模拟matlab代码(转载+自己调研汇总) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目前PQRST網上現成的代碼有兩份[1][2]

我們采用[2],原因是[1]中采用了lowpass這個函數,

[3]中提到:"注意,只有2018年之后的matlab才有lowpass, bandpass 函數。"

只想說[1]的代碼略坑,難不成為了lowpass重裝matlab嗎?劃不來。

所以還是用[2]吧

------------------------------------------------------------------------------------------------------------------------------------------------------

說下PQRST啥意思?

其實就是給一堆數據,進行離散點擬合。

但是不能亂擬合,需要體現一些醫學特征

所以可以把PQRST理解為一種"滿足醫學需要的曲線擬合"。

------------------------------------------------------------------------------------------------------------------------------------------------------

數據集來自[4]

完整代碼如下(下面其實包含了三種濾波器,最后一部分才是PQRST模擬):

close all;clear;clc; sig=load('ecg_60hz_200.dat'); % sig=load('100.dat');% data=importdata('/home/appleyuchi/桌面/心電信號處理算法設計/data4.txt'); % sig=data'; % % TIME=linspace(0,18.68,1868);%時間N=length(sig); fs=100; t=[0:N-1]/fs; figure(1);subplot(4,2,1);plot(sig) title('Original Signal') %%% Low Pass Filter b=1/32*[1 0 0 0 0 0 -2 0 0 0 0 0 1]; a=[1 -2 1]; sigL=filter(b,a,sig); subplot(4,2,3);plot(sigL) title('Low Pass Filter') subplot(4,2,4);zplane(b,a) %%% High Pass Filter b=[-1/32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1/32]; a=[1 -1]; sigH=filter(b,a,sigL); subplot(4,2,5);plot(sigH) title('High Pass Filter') subplot(4,2,6);zplane(b,a) %%% Derivative Base Filter b=[1/4 1/8 0 -1/8 -1/4]; a=[1]; sigD=filter(b,a,sigH); subplot(4,2,7);plot(sigD) title('Derivative Base Filter') subplot(4,2,8);zplane(b,a) %%% be tavane 2 miresanim sigD2=sigD.^2; %%% normalization signorm=sigD2/max(abs(sigD2)); %%h=ones(1,31)/31; sigAV=conv(signorm,h); sigAV=sigAV(15+[1:N]); sigAV=sigAV/max(abs(sigAV)); figure(2);plot(sigAV) title('Moving Average filter') %% treshold=mean(sigAV); P_G= (sigAV>0.01); figure(3);plot(P_G) title('treshold Signal') figure;plot(sigL) %% difsig=diff(P_G); left=find(difsig==1); raight=find(difsig==-1); %%% run cancel delay% 6 sample delay because of LowPass filtering% 16 sample delay because of HighPass filtering left=left-(6+16); raight=raight-(6+16); %%size(left) size(raight)% P-QRS-t for i=1:length(left);[R_A(i) R_t(i)]=max(sigL(left(i):raight(i)));R_t(i)=R_t(i)-1+left(i) %add offset[Q_A(i) Q_t(i)]=min(sigL(left(i):R_t(i)));Q_t(i)=Q_t(i)-1+left(i)[S_A(i) S_t(i)]=min(sigL(left(i):raight(i)));S_t(i)=S_t(i)-1+left(i)[P_A(i) P_t(i)]=max(sigL(left(i):Q_t(i)));P_t(i)=P_t(i)-1+left(i)[T_A(i) T_t(i)]=max(sigL(S_t(i):raight(i)));T_t(i)=T_t(i)-1+left(i)+47end %% figure;plot(t,sigL,t(Q_t),Q_A,'*g',t(S_t),S_A,'^k',t(R_t),R_A,'ob',t(P_t),P_A,'+b',t(T_t),T_A,'+r'); for i=1:((length(P_t))-1)HRV=P_t(i+1)-P_t(i) end

------------------------------------------------------------------------------------------------------------------------------------------------------

運行結果如下:

注意,上述的PQRST代碼適用信號有一個局限性,就是輸入的數據"比較光滑比較密集",如下圖中的Original Signal?

-------------------------------------------------不適合情形--------------------------------------------------------------------------------------------

因為這種信號噪聲沒有濾除,所以不適合直接套用

-------------------------------------------------------故障分析-----------------------------------------------------------------------------------------------

另外注意,如果更換成自己的數據集報錯的話。

原始信號不要有接入噪聲,否則會導致[2]中程序報錯:


Subscripted assignment dimension mismatch.

Error in PQRSTdetection (line 131)
? ? [R_A(i) R_t(i)]=max(sigL(left(i):right(i)));
?

?

這個原因是代碼中有對離散序列進行微分的操作.

最終要求left中的每個數值小于right

下面是故障現場:

P_G =

? Columns 1 through 20

? ? ?1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1

? Columns 21 through 40

? ? ?1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1

? Columns 41 through 60

? ? ?1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 1 ? ? 0 ? ? 0 ? ? 0 ? ? 0 ? ? 0 ? ? 0 ? ? 0(看到沒?這里離散波形微分是-1)

....

?

也就是說P_G序列中必須上升沿先出現,上面的故障場景是下降沿先出現,

就會導致后面的left和right變量不存在left<right 的關系(故障時會有left>right),從而最終導致PQRST圖形窗口無法繪制。
------------------------------------------------------------------------------------------------------------------------------------------------------

Reference:

[1]ECG SIGNAL PQRST PEAK DETECTION

[2]ECG P QRS T wave detecting matlab code

[3]MATLAB 低通濾波器 low pass filter

[4]http://people.ucalgary.ca/~ranga/enel563/SIGNAL_DATA_FILES/

總結

以上是生活随笔為你收集整理的心电信号的PQRST模拟matlab代码(转载+自己调研汇总)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。