/
readIBWbinheader.m
52 lines (46 loc) · 2.8 KB
/
readIBWbinheader.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
function H = readIBWbinheader(FFN);
% readIBWbinheader - read BinHeader segment of Igor IBW file
% H = readIBWbinheader('foo') reads BinHeader of file Foo.ibw
% IBW version 2,5 only
MAXDIMS = 4;
fid = fopen(FFN,'r');
H.version = fread(fid,1,'int16');
switch H.version,
case 2, % typedef struct BinHeader2 {
H.wfmSize = fread(fid,1,'uint32'); % long wfmSize; // The size of the WaveHeader2 data structure plus the wave data plus 16 bytes of padding.
H.noteSize = fread(fid,1,'uint32'); % long noteSize; // The size of the note text.
H.pictSize = fread(fid,1,'uint32'); % long pictSize; // Reserved. Write zero. Ignore on read.
H.checksum = fread(fid,1,'int16'); % short checksum; // Checksum over this header and the wave header.
case 5,
H.checksum = fread(fid,1,'short');
H.wfmSize = fread(fid,1,'long'); % The size of the WaveHeader5 data structure plus the wave data.
H.formulaSize = fread(fid,1,'long'); % The size of the dependency formula, if any.
H.noteSize = fread(fid,1,'long'); % The size of the note text.
H.dataEUnitsSize = fread(fid,1,'long'); % The size of optional extended data units.
H.dimEUnitsSize = fread(fid,MAXDIMS,'long'); % The size of optional extended dimension units.
H.dimLabelsSize = fread(fid,MAXDIMS,'long'); % The size of optional dimension labels.
H.sIndicesSize = fread(fid,1,'long'); ; % The size of string indicies if this is a text wave.
H.optionsSize1 = fread(fid,1,'long'); ; % Reserved. Write zero. Ignore on read.
H.optionsSize2 = fread(fid,1,'long'); ; % Reserved. Write zero. Ignore on read.
otherwise,
end % switch H.Version
fclose(fid);
if ~ismember(H.version,[2 5]),
error(['Cannot read version ' num2str(H.version) ' IBW files - only versions 2,5 are okay.']);
end
%==FROM IgorBin.h =====================
% #define MAXDIMS 4
%
% typedef struct BinHeader5 {
% short version; // Version number for backwards compatibility.
% short checksum; // Checksum over this header and the wave header.
% long wfmSize; // The size of the WaveHeader5 data structure plus the wave data.
% long formulaSize; // The size of the dependency formula, if any.
% long noteSize; // The size of the note text.
% long dataEUnitsSize; // The size of optional extended data units.
% long dimEUnitsSize[MAXDIMS]; // The size of optional extended dimension units.
% long dimLabelsSize[MAXDIMS]; // The size of optional dimension labels.
% long sIndicesSize; // The size of string indicies if this is a text wave.
% long optionsSize1; // Reserved. Write zero. Ignore on read.
% long optionsSize2; // Reserved. Write zero. Ignore on read.
% } BinHeader5;