This function can be used to load header information and data samples from Philips scanner logfiles. It can load all data available in the file, or only selected channels. In addition to the raw data, a special marker table will be returned which contains indexing information of all detected events in the marker channel.
Examples:
D = ReadPhilipsScanPhysLog('SCANPHYSLOG20110420142406.log');
Reads all physiological channels and marker flags. The marker index
information will automatically put into D.M and D.I.
D = ReadPhilipsScanPhysLog('SCANPHYSLOG20110420142406.log',{'v1','v2','resp'});
Reads both artefact corrected VCG and respiration channels. The marker index
information will automatically put into D.M and D.I.
D = ReadPhilipsScanPhysLog('SCANPHYSLOG20110420142406.log','none');
Ignore channels, and only load markers (i.e. DATA.C==[])
[D H] = ReadPhilipsScanPhysLog('SCANPHYSLOG20110420142406.log');
Also parses the header and stores info in H.
Use start/stop markers to extract epochs:
beginindex = D.M(find(D.M(:,1)==16),2);
endindex = D.M(find(D.M(:,1)==32),2);
epoch = D.C(beginindex:endindex,:);
However, the start marker is not properly synchronized with the onset of the
first volume. As a workaround you could use the end-marker and real duration of
the scan and calculate the start index yourself:
freq=500;
TR=2.3;
nrvolumes=200;
endindex = D.M(find(D.M(:,1)==16),2);
beginindex = endindex - nrvolumes * TR * freq;
epoch = logdata.C(beginindex:endindex,:);
Compatability
Developed and tested with Matlab R2009a (7.8.0) - Windows 64-bit.
bitand behaviour was changed in Version 7 (R14), so you might have
compatibility issues with release before R14.
|