内江企业网站建设公司,宽带公司排名,网站开发 足球球队信息,网站建设协议书 保密条款Matlab 中的字符#xff08;char#xff09;和字符串#xff08;string#xff09;_matlab char转字符串-CSDN博客 字符和字符串相互转#xff0c;很多时候还是需要的。如下面的代码#xff0c;需要判断一系列ASCII码#xff0c;其实是判断字符串#xff0c;首先fread读…Matlab 中的字符char和字符串string_matlab char转字符串-CSDN博客 字符和字符串相互转很多时候还是需要的。如下面的代码需要判断一系列ASCII码其实是判断字符串首先fread读到的是数组型经dec2hec转字符数组还需要string转字符串型才更好判断当然用字符数组也可以判断。
close all,clear,clc% PATH C:\Users\User\Downloads\; % path, where data are saved
PATHdata\;
NPD_filename ESTBC001.NPD; % header-file in text format
signald fullfile(PATH, NPD_filename);%% 标准数据头判断%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 以字节读取文件
fidfopen(signald,r);
A fread(fid, inf, uint8); %
% xfscanf(fid2,%g); %
fclose(fid);B dec2hex(A);
for i1:518 % 文件头518个字节其实不用判断到518个
% % 解析每包数据有多少个数据点即recordingPeriodTicks
% % if( string(B(i,:)) 67string(B(i1,:)) 50string(B(i2,:)) 65string(B(i3,:)) 72string(B(i4,:)) 69string(B(i5,:)) 6F...,
% string(B(i6,:)) 64string(B(i7,:)) 54string(B(i8,:)) 69string(B(i9,:)) 63string(B(i10,:)) 6Bstring(B(i11,:)) 73 )
% bit1 char( hex2dec( B(i13,:) ) );
% bit2 char( hex2dec( B(i14,:) ) );
% bit3 char( hex2dec( B(i15,:) ) );
% bit4 char( hex2dec( B(i16,:) ) );
% recordingPeriodTicks str2num( [bit1 bit2 bit3 bit4] );
% end
% 解析采样数据点数参数即numEcgSamples
if( string(B(i,:)) 6Estring(B(i1,:)) 75string(B(i2,:)) 6Dstring(B(i3,:)) 45string(B(i4,:)) 63string(B(i5,:)) 67...,string(B(i6,:)) 53string(B(i7,:)) 61string(B(i8,:)) 6Dstring(B(i9,:)) 70string(B(i10,:)) 6Cstring(B(i11,:)) 65string(B(i12,:)) 73 )bit1 char( hex2dec( B(i14,:) ) ); bit2 char( hex2dec( B(i15,:) ) ); bit3 char( hex2dec( B(i16,:) ) ); bit4 char( hex2dec( B(i17,:) ) ); numEcgSamples str2num( [bit1 bit2 bit3 bit4] );break;
end
end%% 重新以双字节读取文件
clear A;clear B;
fidfopen(signald,r);
A fread(fid, inf, uint16); %
% xfscanf(fid2,%g); %
fclose(fid);B dec2hex(A);% 每两个028F之间取数据拼接成采样数组。第一个头和第二个头之间不是数据。
% 只考虑028F是简化方法因为文件头起始也是028F实际是02 8F 00 02 00 01数据最后也有一个028F实际是02 8F 00 00 01 01
% 实际的数据头是02 8F 00 01 00 02也可用标准数据头判断
%% 简化方法判断%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
bgn_pos_buf [];
C [];
for i1:length(B)if( B(i,1)0B(i,2)2B(i,3)8 B(i,4)F )ibgn_pos_buf [bgn_pos_buf i];if(length(bgn_pos_buf)2) %C [ C; B(bgn_pos_buf(end-1)3:bgn_pos_buf(end)-1,:) ];endend
end%% 数据
D hex2dec(C);
if(length(D)numEcgSamples) % 验证数据个数是否正确clc;fprintf(截取的数据个数和文件头中解析出个数:----对上----\n);
% disp(get data OK!);plot(D);
elseD D(1:numEcgSamples);clcfprintf(截取的数据个数和文件头中解析出个数:----没对上----\n);plot(D);
endzhh 1;