MATLAB代做  | MATLAB代写  | MATLAB有偿编程
首 页
当前位置:MATLAB代做|MATLAB代写|MATLAB有偿编程matlab源码信号处理
基于matlab编程MIT-BIH ECG 信号的数据读取方法        [↓跳到下载地址]
官方主页:源码共享网站:www.buycode.cn

联系方式:客服QQ:1747812398 买代码源码软件站,欢迎咨询

运行环境:Win9X/2000/XP/2003/

源码语言:简体中文

源码类型:源码程序 - 信号处理

推荐星级:

更新时间:2015-04-23 00:08:03

源码简介

具体的程序代码如下:
%-------------------------------------------------------------------------
% 程序Fun_ReadECGData 用于读取ECG信号数据,将原始的二值数据转换为十进制数
% 输入参数及其示例:
% PATH= 'D:\MATLAB\R2007b\work\ECG Data'; % 指定数据的储存路径
% HEADERFILE= '117.hea';      % .hea 格式,头文件,可用记事本打开
% DATAFILE='117.dat';         % .dat 格式,ECG 数据
% SAMPLES2READ=2048;          % 指定需要读入的样本数
%                             % 若.dat文件中存储有两个通道的信号:
%                             % 则读入 2*SAMPLES2READ 个数据
% 输出参数:M —— 一个SAMPLES2READ行2列的数据矩阵,每列数据代表一个通道的信号值
%-------------------------------------------------------------------------
                           
function M = Fun_ReadECGData(PATH,HEADERFILE,DATAFILE,SAMPLES2READ)
%------ LOAD HEADER DATA --------------------------------------------------
%------ 读入头文件数据 -----------------------------------------------------
%
% 示例:用记事本打开的117.hea 文件的数据
%
%      117 2 360 650000
%      117.dat 212 200 11 1024 839 31170 0 MLII
%      117.dat 212 200 11 1024 930 28083 0 V2
%      # 69 M 950 654 x2
%      # None
%
%-------------------------------------------------------------------------

%-------------------------------------------------------------------------
% 【注】函数 fprintf 的功能将格式化的数据写入到指定文件中。
% 表达式:count = fprintf(fid,format,A,...)
% 在字符串'format'的控制下,将矩阵A的实数数据进行格式化,并写入到文件对象fid中。该函数返回所写入数据的字节数 count。
% fid 是通过函数 fopen 获得的整型文件标识符。fid=1,表示标准输出(即输出到屏幕显示);fid=2,表示标准偏差。
%-------------------------------------------------------------------------
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',[1,3]);      % 按照格式 '%*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',[1,5]);
    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;
%------ LOAD BINARY DATA --------------------------------------------------
%------ 读取 ECG 信号二值数据 ----------------------------------------------
%
% 说明:.dat 文件的数据格式
%
%      用 uint8 格式读入 N 个样本,存入矩阵 A 中,则 A 有 N 行、3列,每列一个字节,
%      即每行用三个字节表示两个数m1、m2,每个数 12 bits,故又称为 212 格式
%      m1的低8位存放在 A(:,1),m2的低8位存放在A(:,3),
%      m1的高4位存放在A(:,2)的低4位,m2的高4位存放在A(:,2)的高4位
%     
% 根据上述数据格式,可以用一系列移位、位与操作,提取出十进制格式的双通道信号数据
%
%-------------------------------------------------------------------------
if dformat~= [212,212], 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, [3, SAMPLES2READ], 'uint8')';      % 矩阵A共有SAMPLES2READ行、3列,每列数据都是以uint8格式读入,注意这时数据通过uint8的读入方式已经成为十进制数了
fclose(fid2);
M2H= bitshift(A(:,2), -4);                          % 字节向右移四位,即取字节的高四位,属于信号2的高4位
M1H= bitand(A(:,2), 15);                          % 取字节的低四位,属于信号1的高4位
PRL=bitshift(bitand(A(:,2),8),9);                % sign-bit   取出字节低四位中最高位,向左移九位
PRR=bitshift(bitand(A(:,2),128),5);            % sign-bit   取出字节高四位中最高位,向左移五位
M( : , 1)= bitshift(M1H,8)+ A(:,1)-PRL;       % 将M1H、M2H分别左移8位,即乘以2^8,再分别加上A(:,1),A(:,2),
M( : , 2)= bitshift(M2H,8)+ A(:,3)-PRR;      % 由于左移时把符号位也移动了,要减去符号位的值
M=M';            % 为了方便后期的数据处理,将输出矩阵 M 转置为2行SAMPLES2READ列


提 示:本站所有源码只提供浏览,需要定制的朋友可以联系在线客服!
注意:价格根据项目的难易程度来定价格业务咨询

基于matlab编程MIT-BIH ECG 信号的数据读取方法 --下载地址

注意:为避免不必要的误会,本站项目里的源码只公开部分需要的联系在线客服

本站长期招聘程序代写高手,欢迎加入华南地区matlab团队

想创业却没有经验的人

无论你是否有过网上开店的经验,都可以随时联系在线客服,建立自己独立的网站
想开网店却不知道如何入手

淘宝创业成本低而且风险小,如果想开淘宝店的朋友可以联系在线客服。
想兼职创业,却不擅长交际与服务的人

在家创业月入5000元。网站程序+百套群发工具+网赚资料+域名+空间+本站终身代理资格,这样你网赚的条件全具备了。每天3小时管理、推广、收钱。
缺乏能快速赢利型产品的人

导入多种最新流行营销软件+网赚教程,让入驻者轻松加盟、复制有效成交技巧、快速赚钱。

源码评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

浏览说明

* 本站所有源码全部公开,随时随地浏览!
* MATLAB软件如用于商业用途,请购买正版!
* 如果您发现下载链接错误,请点击报告错误谢谢!
* 站内提供的所有软件包含破解及注册码均是由网上搜集,若侵犯了你的版权利益,敬请来信通知我们!
Copyright © 2008-2014 www.buycode.cn. All Rights Reserved.
页面执行时间:203.12500 毫秒