📄 loadcnt.m
字号:
h.fspp2 = fread(fid,1,'ushort');h.fspalpha = fread(fid,1,'float');h.fspnoise = fread(fid,1,'float');h.fspv1 = fread(fid,1,'short');h.montage = fread(fid,40,'char');h.eventfile = fread(fid,40,'char');h.fratio = fread(fid,1,'float');h.minor_rev = fread(fid,1,'char');h.eegupdate = fread(fid,1,'short');h.compressed = fread(fid,1,'char');h.xscale = fread(fid,1,'float');h.yscale = fread(fid,1,'float');h.xsize = fread(fid,1,'float');h.ysize = fread(fid,1,'float');h.acmode = fread(fid,1,'char');h.commonchnl = fread(fid,1,'uchar');h.xtics = fread(fid,1,'char');h.xrange = fread(fid,1,'char');h.ytics = fread(fid,1,'char');h.yrange = fread(fid,1,'char');h.xscalevalue = fread(fid,1,'float');h.xscaleinterval = fread(fid,1,'float');h.yscalevalue = fread(fid,1,'float');h.yscaleinterval = fread(fid,1,'float');h.scaletoolx1 = fread(fid,1,'float');h.scaletooly1 = fread(fid,1,'float');h.scaletoolx2 = fread(fid,1,'float');h.scaletooly2 = fread(fid,1,'float');h.port = fread(fid,1,'short');h.numsamples = fread(fid,1,'ulong');h.filterflag = fread(fid,1,'char');h.lowcutoff = fread(fid,1,'float');h.lowpoles = fread(fid,1,'short');h.highcutoff = fread(fid,1,'float');h.highpoles = fread(fid,1,'short');h.filtertype = fread(fid,1,'char');h.filterdomain = fread(fid,1,'char');h.snrflag = fread(fid,1,'char');h.coherenceflag = fread(fid,1,'char');h.continuoustype = fread(fid,1,'char');h.eventtablepos = fread(fid,1,'long');h.continuousseconds = fread(fid,1,'float');h.channeloffset = fread(fid,1,'long');h.autocorrectflag = fread(fid,1,'char');h.dcthreshold = fread(fid,1,'uchar');for n = 1:h.nchannels e(n).lab = deblank(char(fread(fid,10,'char')')); e(n).reference = fread(fid,1,'char'); e(n).skip = fread(fid,1,'char'); e(n).reject = fread(fid,1,'char'); e(n).display = fread(fid,1,'char'); e(n).bad = fread(fid,1,'char'); e(n).n = fread(fid,1,'ushort'); e(n).avg_reference = fread(fid,1,'char'); e(n).clipadd = fread(fid,1,'char'); e(n).x_coord = fread(fid,1,'float'); e(n).y_coord = fread(fid,1,'float'); e(n).veog_wt = fread(fid,1,'float'); e(n).veog_std = fread(fid,1,'float'); e(n).snr = fread(fid,1,'float'); e(n).heog_wt = fread(fid,1,'float'); e(n).heog_std = fread(fid,1,'float'); e(n).baseline = fread(fid,1,'short'); e(n).filtered = fread(fid,1,'char'); e(n).fsp = fread(fid,1,'char'); e(n).aux1_wt = fread(fid,1,'float'); e(n).aux1_std = fread(fid,1,'float'); e(n).senstivity = fread(fid,1,'float'); e(n).gain = fread(fid,1,'char'); e(n).hipass = fread(fid,1,'char'); e(n).lopass = fread(fid,1,'char'); e(n).page = fread(fid,1,'uchar'); e(n).size = fread(fid,1,'uchar'); e(n).impedance = fread(fid,1,'uchar'); e(n).physicalchnl = fread(fid,1,'uchar'); e(n).rectify = fread(fid,1,'char'); e(n).calib = fread(fid,1,'float');end% finding if 32-bits of 16-bits file% ----------------------------------begdata = ftell(fid);enddata = h.eventtablepos; % after dataif strcmpi(r.dataformat, 'int16') nums = (enddata-begdata)/h.nchannels/2;else nums = (enddata-begdata)/h.nchannels/4;end;% number of sample to read% ------------------------if ~isempty(r.sample1) r.t1 = r.sample1/h.rate;else r.sample1 = r.t1*h.rate;end;if strcmpi(r.dataformat, 'int16') startpos = r.t1*h.rate*2*h.nchannels;else startpos = r.t1*h.rate*4*h.nchannels;end;if isempty(r.ldnsamples) if ~isempty(r.lddur) r.ldnsamples = round(r.lddur*h.rate); else r.ldnsamples = nums; end;end;% channel offset% --------------if ~isempty(r.blockread) h.channeloffset = r.blockread;end;if h.channeloffset > 1 fprintf('WARNING: reading data in blocks of %d, if this fails, try using option "''blockread'', 1"\n', ... h.channeloffset);end;disp('Reading data .....')if type == 'cnt' % while (ftell(fid) +1 < h.eventtablepos) %d(:,i)=fread(fid,h.nchannels,'int16'); %end fseek(fid, startpos, 0); if h.channeloffset <= 1 dat=fread(fid, [h.nchannels r.ldnsamples], r.dataformat); else h.channeloffset = h.channeloffset/2; % reading data in blocks dat = zeros( h.nchannels, r.ldnsamples); dat(:, 1:h.channeloffset) = fread(fid, [h.channeloffset h.nchannels], r.dataformat)'; counter = 1; while counter*h.channeloffset < r.ldnsamples dat(:, counter*h.channeloffset+1:counter*h.channeloffset+h.channeloffset) = ... fread(fid, [h.channeloffset h.nchannels], r.dataformat)'; counter = counter + 1; end; end; %ftell(fid) if strcmpi(r.scale, 'on') disp('Scaling data .....') %%% scaling to microvolts for i=1:h.nchannels bas=e(i).baseline;sen=e(i).senstivity;cal=e(i).calib; mf=sen*(cal/204.8); dat(i,:)=(dat(i,:)-bas).*mf; end end fseek(fid, h.eventtablepos, 'bof'); disp('Reading Event Table...') eT.teeg = fread(fid,1,'uchar'); eT.size = fread(fid,1,'ulong'); eT.offset = fread(fid,1,'ulong'); if eT.teeg==2 nevents=eT.size/sizeEvent2; if nevents > 0 ev2(nevents).stimtype = []; for i=1:nevents ev2(i).stimtype = fread(fid,1,'ushort'); ev2(i).keyboard = fread(fid,1,'char'); ev2(i).keypad_accept = fread(fid,1,'char'); ev2(i).offset = fread(fid,1,'long'); ev2(i).type = fread(fid,1,'short'); ev2(i).code = fread(fid,1,'short'); ev2(i).latency = fread(fid,1,'float'); ev2(i).epochevent = fread(fid,1,'char'); ev2(i).accept = fread(fid,1,'char'); ev2(i).accuracy = fread(fid,1,'char'); end else ev2 = []; end; elseif eT.teeg==1 nevents=eT.size/sizeEvent1; if nevents > 0 ev2(nevents).stimtype = []; for i=1:nevents ev2(i).stimtype = fread(fid,1,'ushort'); ev2(i).keyboard = fread(fid,1,'char'); ev2(i).keypad_accept = fread(fid,1,'char'); ev2(i).offset = fread(fid,1,'long'); end; else ev2 = []; end; else disp('Skipping event table (tag != 1,2 ; theoritically impossible)'); ev2 = []; end end fseek(fid, -1, 'eof');t = fread(fid,'char');f.header = h;f.electloc = e;f.data = dat;f.Teeg = eT;f.event = ev2;f.tag=t;%%%% channels labelsfor i=1:h.nchannels plab=sprintf('%c',f.electloc(i).lab); if i>1 lab=str2mat(lab,plab); else lab=plab; end end %%%% to change offest in bytes to points if ~isempty(ev2) ev2p=ev2; ioff=900+(h.nchannels*75); %% initial offset : header + electordes desc if strcmpi(r.dataformat, 'int16') for i=1:nevents ev2p(i).offset=(ev2p(i).offset-ioff)/(2*h.nchannels) - r.sample1; %% 2 short int end end else % 32 bits for i=1:nevents ev2p(i).offset=(ev2p(i).offset-ioff)/(4*h.nchannels) - r.sample1; %% 4 short int end end end; f.event = ev2p;end;frewind(fid);fclose(fid);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -