资源简介
MATLAB 对ECG原始数据(MIT-BIH库)信号进行低通滤波、工频干扰抑制、线性滤波(基线漂移就正)和简单的QRS波、R点识别。
代码片段和文件信息
%% ECG数据库(MIT-BIH库)读取识别QRS波
%有待确认(1)(2)的效果哪个更好
clc;
clear;
PATH= ‘E:\MATLAB\ecg数据\xdsj‘; %指定数据的储存路径
HEADERFILE= ‘100.hea‘; %.hea 格式,头文件,可用记事本打开
DATAFILE=‘100.dat‘; %.dat 格式,ECG 数据
SAMPLES2READ=4*2048; %指定需要读入的样本数若.dat文件中存储有两个通道的信号:则读入 2*SAMPLES2READ 个数据
%头文件中的信息
fprintf(1‘\\n$> WORKING ON %s ...\n‘ HEADERFILE); % 在Matlab命令行窗口提示当前工作状态
signalh=fullfile(PATH HEADERFILE); % 通过函数 fullfile 获得头文件的完整路径
fid1=fopen(signalh‘r‘); % 打开头文件,其标识符为 fid1 ,属性为‘r‘--“只读”
z=fgetl(fid1); % 读取头文件的第一行数据,字符串格式
A=sscanf(z ‘%*s %d %d %d‘[13]); % 按照格式 ‘%*s %d %d %d‘ 转换数据并存入矩阵 A 中
nosig= A(1); % 信号通道数目
sfreq=A(2); % 数据采样频率
clear A; % 清空矩阵 A ,准备获取下一行数据
for k=1:nosig % 读取每个通道信号的数据信息
z= fgetl(fid1);
A= sscanf(z ‘%*s %d %d %d %d %d‘[15]);
dformat(k)= A(1); % 信号格式; 这里只允许为 212 格式
gain(k)= A(2); % 每 mV 包含的整数个数
bitres(k)= A(3); % 采样精度(位分辨率)
zerovalue(k)= A(4); % ECG 信号零点相应的整数值
firstvalue(k)= A(5); % 信号的第一个整数值 (用于偏差测试)
end;
fclose(fid1);
clear A;
%读取data数据
if dformat~= [212212] error(‘this script does not apply binary formats different to 212.‘); end;
signald= fullfile(PATH DATAFILE); % 读入 212 格式的 ECG 信号数据
fid2=fopen(signald‘r‘);
A= fread(fid2 [3SAMPLES2READ] ‘uint8‘); % matrix with 3 rows each 8 bits long = 2*12bit 矩阵A共有SAMPLES2READ行、3列,每列数据都是以uint8格式读入,注意这时数据通过uint8的读入方式已经成为十进制数了
fclose(fid2);
M2H= bitshift(A(2:) -4); % 字节向右移四位,即取字节的高四位,属于信号2的高4位
M1H= bitand(A(2:) 15); %取字节的低四位
PRL=bitshift(bitand(A(2:)8)9); % sign-bit 取出字节低四位中最高位,向左移九位 移位?
PRR=bitshift(bitand(A(2:)128)5); % sign-bit 取出字节高四位中最高位,向左移五位
M( 1 :)= bitshift(M1H8)+ A( 1 : )-PRL;% 将M1H、M2H分别左移8位,即乘以2^8,再分别加上A(:1),A(:2),
M( 2 :)= bitshift(M2H8)+ A( 2 : )-PRR;% 由于左移时把符号位也移动了,要减去符号位的值
%if M(1:) ~= firstvalue error(‘inconsistency in the first bit values‘); end;
%switch nosig
%case 2
M( 1 :)= (M( 1 :)- zerovalue(1))/gain(1);
M( 2 :)= (M( 2 :)- zerovalue(2))/gain(2);
TIME=(0:(SAMPLES2READ-1))/sfreq;
%case 1
%M( : 1)= (M( : 1)- zerovalue(1));
%M( : 2)= (M( : 2)- zerovalue(1));
%M=M‘;
%M(1)=[];
%sM=size(M);
%sM=sM(2)+1;
%M(sM)=0;
%M=M‘; % 为了方便后期的数据处理,将输出矩阵 M 转置为2行SAMPLES2READ列
%M=M/gain(1);
%TIME=(0:2*(SAMPLES2READ)-1)/sfreq;
%otherwise % this case did not appear up to now!
% here M has to be sorted!!!
%disp(‘Sorting algorithm for more than 2 signals not programmed yet!‘);
%end;
clear A M1H M2H PRR PRL;
fprintf(1‘\\n$> LOADING DATA FINISHED \n‘); %装载数据完成
figure(1); clf box on hold on
plot(TIME M(1:)‘r‘);
%if nosig==2
%plo
- 上一篇:序列二次规划法及matlab代码
- 下一篇:多智能体一致性问题报告
相关资源
- 多智能体一致性问题报告
- 序列二次规划法及matlab代码
- 单位抽样和单位阶跃程序
- RSSI算法定位matlab仿真.zip
- 空间平滑MUSIC算法MATLAB程序
- 图像质量评价matlab代码
- matlab 图像分割
- MATLAB GUI 图像二值化处理源文件直接运
- csma/ca和csma/cd的matlab源代码仿真
- 基于模糊逻辑的步态识别的matlab程序
- MATLAB批量读取NC数据并计算年平均
- Matlab遗传算法源程序详解
- SOM matlab toolbox 使用文档
- 六自由度机械臂正逆运动Matlab仿真
- CT图像处理三维体绘制简单的GUI
- 基于MATLAB的QPSK调制.zip
- 基于matlab的数字图像分割技术研究及
- 纠错编码原理及MATLAB实现刘爱莲习题
- 基于Matlab的BP神经网络在大气污染预报
- 推荐_在matlab7.4基础上实现恒虚警检测
- LDPC码MATLAB仿真实现
- matlab提取圆形
- 最小二乘的递推算法(Matlab)
- D-S证据理论 MATLAB完整代码
- matlabPFC仿真模型
- matlab近似处理电力系统潮流追踪Powe
- 粒子群优化的极限学习机matlab源代码
- 粒子群算法MATLAB仿真
- 图像中提取圆环的matlab代码
- matlab 实现Gabor滤波器
评论
共有 条评论