fullfile( '?'_'?' _res) matlab,哪个大神可以帮我看一下,哪里错了吗?跪谢

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

function M = Fun_ReadECGData(PATH,HEADERFILE,DATAFILE,SAMPLES2READ)

fprintf(1,'//n$> WORKING ON %s .../n', HEADERFILE); % 在Matlab命令行窗口提示当前工作状态

signalh= fullfile(PATH, HEADERFILE); % 通过函数 fullfile 获得头文件的完整路径

fidl=fopen(signalh,'r'); % 打开头文件,其标识符为 fid1 ,属性为'r'--“只读”

z=fgetl(fidl); % 读取头文件的第一行数据,字符串格式

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(fidl);

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(fidl);

clear A;

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列

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值