⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rdrawhd_silent.m

📁 神经元信号处理软件
💻 M
字号:
function a=rdrawhd(d)% rdrawhd - Parses MCS data header vers. 1 (datastream method)
% a=rdrawhd(d) Parse MCS data header
% To use this function data-files must be open already (fid is 
% input parameter). ChannelID is incremented by 1 because the 
% first channel sampled is 0, i.e. its index in the sampling 
% sequence is 0 matlab indices, however, start with 1.
global MEAINFOload meainfo
%-------------------------	fseek(d.fid,0,-1);				% rewinds the data file%----- parseHeader -------------------------	d.offset_to_data = fread(d.fid,1,'unsigned long');  % offset to data. 1100%	disp(['data section should start at ' int2str(offset_to_data) ' byte']);	word  = fread(d.fid,1,'unsigned short');			% header class tag	word  = fread(d.fid,1,'unsigned short');			% schema of header class	word  = fread(d.fid,1,'unsigned short');			% header class name length	str   = fread(d.fid, word, 'char');		   str   = setstr(str)';      	     	  	% header class name. "CMRawDataHeaderInfo"
   	switch str
		case {'CMRawDataHeaderInfo'}, d.DataType = 'raw';     %%%%% semicolon added by ab %%%%%
		case {'CMSpikeDataHeaderInfo'}, d.DataType = 'spike'; %%%%% semicolon added by ab %%%%%
		otherwise, error('invalid file at header class name')
	end
	dword = fread(d.fid,1,'unsigned long');			% header class version	str   = fread(d.fid,16,'char');						% header class GUID	dword = fread(d.fid,1,'unsigned long');   timeOfDay=((dword/3600/24) - floor(dword/3600/24));
   d.recordingdate = datenum(1970,1,1) + floor(dword/3600/24) + timeOfDay;	% Datum der Messung
%%%%% ab %%%%%   disp(['Recording date:  ' datestr(d.recordingdate,0)]);
	dword = fread(d.fid,1,'unsigned long');			% header class version	word  = fread(d.fid,1,'unsigned short');			% channel count	if(d.DataType(1:3) == 'raw')
		word  = fread(d.fid,1,'unsigned short');			% segment count
	end;%----- parseChannelFilter -------------------------	word  = fread(d.fid,1,'unsigned short');			% channel filter class tag. 0xFFFF	word  = fread(d.fid,1,'unsigned short');			% schema	word  = fread(d.fid,1,'unsigned short'); 	word  = fread(d.fid,1,'unsigned short');
	str  = fread(d.fid,word,'char');			% channel filter class name. "CChannelFilter"	str  = setstr(str)';				% channel filter class name. "CChannelFilter"   if str ~='CChannelFilter' error('invalid file at CChannelFilter'), end;
%----- read in mapping from selected to original channel numbers --------------------	d.NChannels  = fread(d.fid,1,'unsigned short');		% no. of channels selected   d.ChannelID = zeros(1,d.NChannels);
   
   % This would give the correct ChannelID corresponding to a linear adressing of the MEA matrix   
   %   for i=1:RACKSETUP.NChannels,                    
   %     LChannelID(i)  = 1+fread(fid1,1,'int32');                % original channel number (an dieser Darstellungsposition i, von 0 aus gezaehlt)
   %   end;
   %   d.ChannelID= MEAINFO.idxpadmat(LChannelID);

   
   for i=1:d.NChannels,						d.ChannelID(i)  = 1+fread(d.fid,1,'int32');	% original channelpos. in sampling sequence  (!startpos. is 0!)	end;
%----- read in chosen names for the channels -------------------------	nChannelNames  = fread(d.fid,1,'unsigned short');	% no. of channels selected   if nChannelNames ~=d.NChannels error('can t handle #channels~=#channel names'), end;
   d.ChannelNames=cell(1,d.NChannels);	for i  =1:d.NChannels,      namelength = fread(d.fid,1,'int8');		% Laenge des Namens		str   = fread(d.fid,namelength,'char');% Name selbst, read in chosen names for the channels 		str   = rot90(setstr(str));    			% channel name		d.ChannelNames{i} = str;	end;
% ----- Anzeige der Kanalzuordnung, nur zur Information -------------------------%	plotmea(d)

%----- parseDispProperty -------------------------	word  = fread(d.fid,1,'unsigned short');	word  = fread(d.fid,1,'unsigned short');	word  = fread(d.fid,1,'unsigned short');	str   = fread(d.fid,word,'char');	str   = rot90(setstr(str));				%display property class name. "CMMEADispProperty"	if str ~='CMMEADispProperty' error('invalid file at CMMEADispProperty'), end;
	long  = fread(d.fid,1,'long');	long  = fread(d.fid,1,'long');	long  = fread(d.fid,1,'long');	long  = fread(d.fid,1,'long');	long  = fread(d.fid,1,'long');%----- parseUnitProperty -------------------------	word  = fread(d.fid,1,'unsigned short');	word  = fread(d.fid,1,'unsigned short');	word  = fread(d.fid,1,'unsigned short');	str   = fread(d.fid,word,'char');	str   = rot90(setstr(str));				% unit property class name. "CMMEAUnitProperty"	if str ~='CMMEAUnitProperty' error('invalid file at CMMEAUnitProperty'), end;
	d.MicrovoltsPerAD = fread(d.fid,1,'double');		% Microvolts per AD	d.MicrosecondsPerTick = fread(d.fid,1,'unsigned short');	% Microseconds per Tick	d.ZeroADValue = fread(d.fid,1,'unsigned short');		% AD value for zero Microvolts%------------------------- -------------------------	dword = fread(d.fid,1,'unsigned long');	dword = fread(d.fid,1,'unsigned long');	dword = fread(d.fid,1,'unsigned long');	dword = fread(d.fid,1,'unsigned long');	dword = fread(d.fid,1,'unsigned long');	word  = fread(d.fid,1,'unsigned short');%----- parseViewProperty -------------------------	word  = fread(d.fid,1,'unsigned short');	word  = fread(d.fid,1,'unsigned short');	word  = fread(d.fid,1,'unsigned short');	str   = fread(d.fid,word,'char');	str   = rot90(setstr(str));				%view property class name. "CViewProperty"	if str ~='CViewProperty' error('invalid file at CViewProperty'), end;
	word  = fread(d.fid,1,'unsigned short');	word  = fread(d.fid,1,'unsigned short');	word  = fread(d.fid,1,'unsigned short');	word  = fread(d.fid,1,'unsigned short');	dword = fread(d.fid,1,'unsigned long');	dword = fread(d.fid,1,'unsigned long');	dword = fread(d.fid,1,'unsigned long');%----- parseMEALayout -------------------------	word  = fread(d.fid,1,'unsigned short');	word  = fread(d.fid,1,'unsigned short');	word  = fread(d.fid,1,'unsigned short');	str   = fread(d.fid,word,'char');	str   = rot90(setstr(str));				% unit property class name. "CMCLayout"	if str ~='CMCLayout' error('invalid file at CMCLayout'), end;
%----- read in positions of electrodes -------------------------	word  = fread(d.fid,1,'unsigned short');	% electrode count. 64	for i = 1:word,		int  = fread(d.fid,1,'int');			% x coordinate of electrode point		int  = fread(d.fid,1,'int');			% y coordinate of electrode point	end;%----- read in names for the electrodes -------------------------	word  = fread(d.fid,1,'unsigned short');	ChannelNames_original = '';	for i = 1:word,		byte  = fread(d.fid,1,'int8');			% Laenge des Namens		str   = fread(d.fid,byte,'char');		str   = rot90(setstr(str));			% electrode name (original wie im MEA Layout)		ChannelNames_original = str2mat(ChannelNames_original, str);	end;%----- read in bounding rect of electrode layout -------------------------	int  = fread(d.fid,1,'int');	int  = fread(d.fid,1,'int');	int  = fread(d.fid,1,'int');	int  = fread(d.fid,1,'int');%----- parseTriggerProperty -------------------------	word  = fread(d.fid,1,'unsigned short');	word  = fread(d.fid,1,'unsigned short');	word  = fread(d.fid,1,'unsigned short');	str   = fread(d.fid,word,'char');	str   = rot90(setstr(str));				% unit property class name. "CMMEATriggerProperty"	if str ~='CMMEATriggerProperty' error('invalid file at CMMEATriggerProperty'), end;	int  = fread(d.fid,1,'int');				% Trigger? 1=Trig,0=	if int==1		d.DataType = [d.DataType,' triggered'];	elseif int == 0		d.DataType = [d.DataType,' continous'];
	else error('invalid file at triggered/continous switch')	end;	int  = fread(d.fid,1,'int');		% pre trigger extent in ticks, wrong its in ms	pretriggerticks = int;%%%%% ab %%%%%   disp(['pretriggerticks = ' num2str(pretriggerticks)]);	     d.ticks_pre_event = pretriggerticks;	d.windowTicksPos = ftell(d.fid);
	int  = fread(d.fid,1,'int');		% total window extent in ticks, wrong its in ms	if(strcmp(d.DataType,'raw continous'))
		d.total_window_ticks=1536*25;
	else%%%%% ab %%%%%   	   disp(['total_window_ms = ' num2str(int)]);	   d.total_window_ticks = int/(d.MicrosecondsPerTick/1000);
	end;
   
   int  = fread(d.fid,1,'int');		%trigger level chosen in uV	triggerleveluV = int;	int  = fread(d.fid,1,'int');		% trigger level suggested in uV	int  = fread(d.fid,1,'int');		% slope? 0=positive 1=negative	d.triggerChannel = fread(d.fid,1,'int');		% hardware trigger channel 	int  = fread(d.fid,1,'int');		% level display: 0=Don't display, 1=Triangle only, 2=Triangle and line	int  = fread(d.fid,1,'int');		% trigger time display: 0=Don't display, 1=Triangle only, 2=Triangle and line		dword = fread(d.fid,1,'unsigned long');	% color level display	dword = fread(d.fid,1,'unsigned long');	% color trigger time display%	dword = fread(d.fid,1,'unsigned long');	% sweep time%----- parseFilter -------------------------	dword = fread(d.fid,1,'unsigned long');		% ?????	word  = fread(d.fid,1,'unsigned short');	word  = fread(d.fid,1,'unsigned short');	word  = fread(d.fid,1,'unsigned short');	str   = fread(d.fid,word,'char');	str   = rot90(setstr(str));			%unit property class name. "CMFilter"	if str ~='CMFilter' error('invalid file at CMFilter'), end;	word  = fread(d.fid,1,'unsigned short');		% window size (in ticks) = 2^word (Filterbreite in Tickmarks)	filter_width_us = d.MicrosecondsPerTick * word;	% window width in us%%%%% ab %%%%%	disp(['filter window width = ' num2str(filter_width_us) ' us'])	word  = fread(d.fid,1,'unsigned short');	word  = fread(d.fid,1,'unsigned short');% -------- read rest of file header specific for analog data files ------------------------------	word  = fread(d.fid,1,'unsigned short');	word  = fread(d.fid,1,'unsigned short');		% evtl. fuer aeltere Daten auskommentieren ue 17.7.97	str   = fread(d.fid,word,'char');	str   = rot90(setstr(str));			%unit property class name. "CMRawDataStreamPointer"
	if (d.DataType(1:3) == 'raw')
		if str ~='CMRawDataStreamPointer' error('invalid file at CMRawDataStreamPointer'), end;
	else
		if str ~='CMSpikeStreamPointer' error('invalid file at CMSpikeStreamPointer'), end;
	end;   
  	if d.offset_to_data~=ftell(d.fid) error('invalid file: offset_to_data not correct'), end;
%%%%% ab %%%%%	disp(['this file contains ' d.DataType])   a=d;
	drawnow;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -