TEAP (Toolbox for Emotion Analysis using Physiological Signals) doc
sseek.m
Go to the documentation of this file.
1 function [HDR]=sseek(HDR,offset,origin)
2 % SSEEK repositions file position indicator
3 % HDR = sseek(HDR,offset,origin)
4 %
5 % offset number of samples relative to origin
6 % origin
7 % -1,'bof': begin of file
8 % 0,'cof': current file position
9 % +1,'eof': end of file
10 %
11 % See also: SOPEN, SREAD, SWRITE, SCLOSE, SSEEK, SREWIND, STELL, SEOF
12 
13 % $Id: sseek.m 2205 2009-10-27 12:18:15Z schloegl $
14 % (C) 1997-2005,2006,2007 by Alois Schloegl <a.schloegl@ieee.org>
15 % This is part of the BIOSIG-toolbox http://biosig.sf.net/
16 
17 % This program is free software; you can redistribute it and/or
18 % modify it under the terms of the GNU General Public License
19 % as published by the Free Software Foundation; either version 2
20 % of the License, or (at your option) any later version.
21 %
22 % This program is distributed in the hope that it will be useful,
23 % but WITHOUT ANY WARRANTY; without even the implied warranty of
24 % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25 % GNU General Public License for more details.
26 %
27 % You should have received a copy of the GNU General Public License
28 % along with this program; if not, write to the Free Software
29 % Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
30 
31 
32 if strcmp(origin,'bof')
33  origin = -1;
34 elseif strcmp(origin,'cof')
35  origin = 0;
36 elseif strcmp(origin,'eof')
37  origin = 1;
38 end;
39 
40 if origin == -1,
41  HDR.FILE.POS = offset;
42  if strmatch(HDR.TYPE,{'ACQ','BDF','EDF','GDF','EPL','MFER','SCP','native','TMS32','WG1'}),
43  elseif HDR.FILE.FID>2,
44  POS = HDR.HeadLen+HDR.AS.bpb*offset;
45  if POS~=ceil(POS), % for alpha format
46  fprintf(HDR.FILE.stderr,'Error STELL (alpha): starting position is non-integer\n');
47  return;
48  end
49  HDR.FILE.status = fseek(HDR.FILE.FID,POS,-1);
50  end
51 
52 elseif origin == 0,
53  HDR.FILE.POS = HDR.FILE.POS + offset;
54  if strmatch(HDR.TYPE,{'ACQ','BDF','EDF','GDF','EPL','MFER','SCP','native','TMS32','WG1'}),
55  elseif HDR.FILE.FID>2,
56  POS = HDR.AS.bpb*offset;
57  if POS~=ceil(POS), % for alpha format
58  fprintf(HDR.FILE.stderr,'Error STELL (alpha): starting position is non-integer\n');
59  return;
60  end
61  HDR.FILE.status = fseek(HDR.FILE.FID,POS,0);
62  end
63 
64 elseif origin == 1,
65  if 0, %strmatch(HDR.TYPE,{}),
66  HDR.FILE.POS = HDR.NRec+offset;
67  HDR.FILE.status = fseek(HDR.FILE.FID,HDR.AS.bpb*offset,1);
68  elseif strmatch(HDR.TYPE,{'ACQ','BDF','EDF','GDF','EPL','Sigma'}),
69  HDR.FILE.POS = HDR.NRec*HDR.SPR+offset;
70  if HDR.FILE.POS < 0,
71  HDR.FILE.POS = 0;
72  elseif HDR.FILE.POS > HDR.NRec*HDR.SPR,
73  HDR.FILE.POS = HDR.NRec*HDR.SPR;
74  end;
75  HDR.FILE.status = fseek(HDR.FILE.FID,HDR.HeadLen+HDR.FILE.POS*HDR.AS.bpb,-1);
76  elseif strmatch(HDR.TYPE,{'CTF','Nicolet'}),
77  POS = HDR.AS.endpos+offset*HDR.AS.bpb;
78  HDR.FILE.status = fseek(HDR.FILE.FID,POS,-1);
79  HDR.FILE.POS = (POS-HDR.HeadLen)/HDR.AS.bpb;
80  elseif strmatch(HDR.TYPE,{'AINF','BKR','ET-MEG','ISHNE','RG64','MIT','LABVIEW','SMA','BVbinmul','BCI2000'}),
81  HDR.FILE.POS = HDR.AS.endpos+offset;
82  HDR.FILE.status = fseek(HDR.FILE.FID,HDR.AS.bpb*offset,1);
83  elseif strmatch(HDR.TYPE,{'CNT','EEG','AVG','EGI','SND','WAV','AIF','CFWB','DEMG'}),
84  HDR.FILE.POS = HDR.AS.endpos+offset;
85  HDR.FILE.status = fseek(HDR.FILE.FID,HDR.HeadLen+(HDR.AS.endpos+offset)*HDR.AS.bpb,-1);
86  elseif strmatch(HDR.TYPE,{'alpha'}),
87  POS = HDR.HeadLen+(HDR.AS.endpos+offset)*HDR.AS.bpb;
88  if POS~=ceil(POS), % for alpha format
89  fprintf(HDR.FILE.stderr,'Error STELL (alpha): starting position is non-integer\n');
90  return;
91  end
92  HDR.FILE.POS = HDR.AS.endpos+offset;
93  HDR.FILE.status = fseek(HDR.FILE.FID,POS,-1);
94  elseif strmatch(HDR.TYPE,{'RDF','SIGIF'}),
95  HDR.FILE.POS = length(HDR.Block.Pos)+offset;
96  elseif strmatch(HDR.TYPE,{'BVascii','BVbinvec','EEProbe-CNT','EEProbe-AVR','FIF','native','MFER','SCP','TMS32','WG1'}),
97  HDR.FILE.POS = HDR.AS.endpos+offset;
98  else
99  fprintf(HDR.FILE.stderr,'Warning SSEEK: format %s not supported.\n',HDR.TYPE);
100  end;
101 else
102  fprintf(2,'error SSEEK: 3rd argument "%s" invalid\n',origin);
103  return;
104 end;
105 
sseek
function sseek(in HDR, in offset, in origin)