├── AGetKTE.m ├── README.md ├── a44002_0010.mat ├── alignBPToReferenceECG.m ├── alignDataAccordingToReferenceData.m ├── alignPPGToReferenceECG.m ├── alignPPGandECG.m ├── baseLineFilter.m ├── calcArea.m ├── computeFeatureInPPG.m ├── computebpvalue.m ├── deleteInefficientFeatureInPPGandECG.m ├── detectDicNotchAndDicPeak.m ├── detectDicNotchAndDicPeakInDescendingEdgeUseWavelet.m ├── detectKpercentKeyPoint.m ├── detectPeaksAndOnsetsInPPG.m ├── detetectPeaksInSSF.m ├── ecg_pqrst_detect.m ├── fftPinYuShang.m ├── findMax.m ├── findMaxInSSF.m ├── findMin.m ├── findPassZeroPointPos.m ├── findPeakShiftInData.m ├── find_peak_ECGpce.m ├── main.m ├── poinToLineDistance.m ├── ssfInPPG.m ├── wavefilter.m └── waveletMethodB.m /AGetKTE.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangboML/bp_features_extraction/7d92e9250431673f3f74250db5f79ef217fcb628/AGetKTE.m -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # bp_features_extraction 2 | 对同步采集的三个信号:PPG、ECG、BP进行特征提取的matlab程序 3 | -------------------------------------------------------------------------------- /a44002_0010.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangboML/bp_features_extraction/7d92e9250431673f3f74250db5f79ef217fcb628/a44002_0010.mat -------------------------------------------------------------------------------- /alignBPToReferenceECG.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangboML/bp_features_extraction/7d92e9250431673f3f74250db5f79ef217fcb628/alignBPToReferenceECG.m -------------------------------------------------------------------------------- /alignDataAccordingToReferenceData.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangboML/bp_features_extraction/7d92e9250431673f3f74250db5f79ef217fcb628/alignDataAccordingToReferenceData.m -------------------------------------------------------------------------------- /alignPPGToReferenceECG.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangboML/bp_features_extraction/7d92e9250431673f3f74250db5f79ef217fcb628/alignPPGToReferenceECG.m -------------------------------------------------------------------------------- /alignPPGandECG.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangboML/bp_features_extraction/7d92e9250431673f3f74250db5f79ef217fcb628/alignPPGandECG.m -------------------------------------------------------------------------------- /baseLineFilter.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangboML/bp_features_extraction/7d92e9250431673f3f74250db5f79ef217fcb628/baseLineFilter.m -------------------------------------------------------------------------------- /calcArea.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangboML/bp_features_extraction/7d92e9250431673f3f74250db5f79ef217fcb628/calcArea.m -------------------------------------------------------------------------------- /computeFeatureInPPG.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangboML/bp_features_extraction/7d92e9250431673f3f74250db5f79ef217fcb628/computeFeatureInPPG.m -------------------------------------------------------------------------------- /computebpvalue.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangboML/bp_features_extraction/7d92e9250431673f3f74250db5f79ef217fcb628/computebpvalue.m -------------------------------------------------------------------------------- /deleteInefficientFeatureInPPGandECG.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangboML/bp_features_extraction/7d92e9250431673f3f74250db5f79ef217fcb628/deleteInefficientFeatureInPPGandECG.m -------------------------------------------------------------------------------- /detectDicNotchAndDicPeak.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangboML/bp_features_extraction/7d92e9250431673f3f74250db5f79ef217fcb628/detectDicNotchAndDicPeak.m -------------------------------------------------------------------------------- /detectDicNotchAndDicPeakInDescendingEdgeUseWavelet.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangboML/bp_features_extraction/7d92e9250431673f3f74250db5f79ef217fcb628/detectDicNotchAndDicPeakInDescendingEdgeUseWavelet.m -------------------------------------------------------------------------------- /detectKpercentKeyPoint.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangboML/bp_features_extraction/7d92e9250431673f3f74250db5f79ef217fcb628/detectKpercentKeyPoint.m -------------------------------------------------------------------------------- /detectPeaksAndOnsetsInPPG.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangboML/bp_features_extraction/7d92e9250431673f3f74250db5f79ef217fcb628/detectPeaksAndOnsetsInPPG.m -------------------------------------------------------------------------------- /detetectPeaksInSSF.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangboML/bp_features_extraction/7d92e9250431673f3f74250db5f79ef217fcb628/detetectPeaksInSSF.m -------------------------------------------------------------------------------- /ecg_pqrst_detect.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangboML/bp_features_extraction/7d92e9250431673f3f74250db5f79ef217fcb628/ecg_pqrst_detect.m -------------------------------------------------------------------------------- /fftPinYuShang.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangboML/bp_features_extraction/7d92e9250431673f3f74250db5f79ef217fcb628/fftPinYuShang.m -------------------------------------------------------------------------------- /findMax.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangboML/bp_features_extraction/7d92e9250431673f3f74250db5f79ef217fcb628/findMax.m -------------------------------------------------------------------------------- /findMaxInSSF.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangboML/bp_features_extraction/7d92e9250431673f3f74250db5f79ef217fcb628/findMaxInSSF.m -------------------------------------------------------------------------------- /findMin.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangboML/bp_features_extraction/7d92e9250431673f3f74250db5f79ef217fcb628/findMin.m -------------------------------------------------------------------------------- /findPassZeroPointPos.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangboML/bp_features_extraction/7d92e9250431673f3f74250db5f79ef217fcb628/findPassZeroPointPos.m -------------------------------------------------------------------------------- /findPeakShiftInData.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangboML/bp_features_extraction/7d92e9250431673f3f74250db5f79ef217fcb628/findPeakShiftInData.m -------------------------------------------------------------------------------- /find_peak_ECGpce.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangboML/bp_features_extraction/7d92e9250431673f3f74250db5f79ef217fcb628/find_peak_ECGpce.m -------------------------------------------------------------------------------- /main.m: -------------------------------------------------------------------------------- 1 | clear all 2 | close all 3 | clc 4 | load('a44002_0010.mat'); %原始数据是N*1 5 | ecg=-ecg; 6 | bp= interp(bp, 8); 7 | ecg= interp(ecg, 8); 8 | ppg= interp(ppg, 8); 9 | bp=bp(24000000:28500000); 10 | ecg=ecg(24000000:28500000); 11 | ppg=ppg(24000000:28500000); 12 | % bp2=bp(8200000:10700000); 13 | % ecg2=ecg(8200000:10700000); 14 | % ppg2=ppg(8200000:10700000); 15 | % bp=[bp1,bp2]; 16 | % ecg=[ecg1,ecg2]; 17 | % ppg=[ppg1,ppg2]; 18 | %% ���ź�ȥ�룬�źŹ�һ���� 19 | ppg=wavefilter(ppg,'db6',10,[1,2,3,4,5,6,7,8,9,10],0); %С��ȥ�����Ư�� 20 | ppg= mapminmax(ppg, 0, 1); 21 | ecg= mapminmax(ecg, 0, 1); 22 | Wn=0.1; 23 | [Bb,Ba]=butter(4,Wn,'low'); % ����MATLAB butter�����������˲��� 24 | [BH,BW]=freqz(Bb,Ba); % ����Ƶ����Ӧ���� 25 | ppg=filter(Bb,Ba,ppg); % ���е�ͨ�˲� 26 | ecg=filter(Bb,Ba,ecg); % ���е�ͨ�˲� 27 | data=ppg-mean(ppg); 28 | bp=filter(Bb,Ba,bp); 29 | plot(ppg); 30 | plot(ecg); 31 | plot(bp); 32 | 33 | 34 | %% ���PPG�źŲ������ʼ�㣬 35 | [peak,onset]=detectPeaksAndOnsetsInPPG(ppg); % N*2��� peak���� onset��ʼ�� 36 | %���PPG�����ҳ�����IJ��� 37 | onset=alignDataAccordingToReferenceData(onset, peak,-300, -10); 38 | plot(ppg) 39 | hold on 40 | plot(peak(:,1),peak(:,2),'ro'); 41 | hold on 42 | plot(onset(:,1),onset(:,2),'r*'); 43 | 44 | %% ��PPG�źŵĽ���Ͽ���ز��� ��ΪN*2 45 | 46 | [dicNotch, dicPeak] = detectDicNotchAndDicPeak(ppg,peak,onset); %�Ҳ�������Ͽ���ز���ʱ��λ��Ϊ0 47 | 48 | 49 | %% �ҳ�ECG�ź�R��λ�úͶ�Ӧ��ֵ N*2 50 | [ecg_Q,ecg_R,ecg_S] = ecg_pqrst_detect(ecg); %�Ҳ���T���� T��λ��Ϊ0 51 | 52 | %% �ҳ�Ѫѹ�źŵ�����ѹ������ѹ 53 | [systolic,diastolic]=detectPeaksAndOnsetsInPPG(bp); 54 | diastolic=alignDataAccordingToReferenceData(diastolic, systolic,-300, -10); 55 | plot(bp) 56 | hold on 57 | plot(diastolic(:,1),diastolic(:,2),'ro'); 58 | hold on 59 | plot(systolic(:,1),systolic(:,2),'r*'); 60 | 61 | %% �������źŰ�ʱ���������� 62 | % ���Ƚ�����ECG�ź��������һ��N*5���� �ֱ���һ���Ķ������ڵ�P��Q��R��S��T ���źŵ�λ������ 63 | %ppg_locs_off PPG�źŵ���������PPG�ź��е�λ�ã���㡢���塢����Ͽ���ز��� 64 | %ecg_locs_off ECG�źŵ���������ECG�ź��е�λ�ã�P Q R S T 65 | %����������ͬһ��λ��Ϊͬһ�Ķ����ڵ�����,��û�����1 ECGû�ҵ�T�� 2�����ڶ�Ӧ��PPG 3�������ز���������� 66 | [ppg_locs_off,ecg_locs_off,bp_locs_off]=alignPPGandECG(ppg,ecg,peak,onset,dicNotch, dicPeak,ecg_Q,ecg_R,ecg_S,systolic,diastolic); 67 | %ppg_locs_end PPG�źŵ���������PPG�ź��е�λ�ã���㡢���塢����Ͽ���ز������յ� 68 | %ecg_locs_end ECG�źŵ���������ECG�ź��е�λ�ã�P Q R S T 69 | [ppg_locs_end,ecg_locs_end,bp_locs_end]=deleteInefficientFeatureInPPGandECG(bp,ppg,ecg,ppg_locs_off,ecg_locs_off,bp_locs_off); 70 | 71 | %% �����ź����� 72 | [PPG_Features,ECG_Features,PPG_ECG_alingFeatures]=computeFeatureInPPG(ppg,ecg,ppg_locs_end,ecg_locs_end); 73 | 74 | %% ����Ѫѹֵ 75 | [SYS_BP,DIA_BP]=computebpvalue(bp,bp_locs_end); 76 | 77 | %% �����õ���ݺ����� 78 | save realdata10 bp ppg ecg PPG_Features ECG_Features PPG_ECG_alingFeatures SYS_BP DIA_BP 79 | plot(ppg); 80 | 81 | 82 | 83 | 84 | 85 | -------------------------------------------------------------------------------- /poinToLineDistance.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangboML/bp_features_extraction/7d92e9250431673f3f74250db5f79ef217fcb628/poinToLineDistance.m -------------------------------------------------------------------------------- /ssfInPPG.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangboML/bp_features_extraction/7d92e9250431673f3f74250db5f79ef217fcb628/ssfInPPG.m -------------------------------------------------------------------------------- /wavefilter.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangboML/bp_features_extraction/7d92e9250431673f3f74250db5f79ef217fcb628/wavefilter.m -------------------------------------------------------------------------------- /waveletMethodB.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WangboML/bp_features_extraction/7d92e9250431673f3f74250db5f79ef217fcb628/waveletMethodB.m --------------------------------------------------------------------------------