1 ## function header=writeheader(sizes,datatype,nbytes,nimage)
3 ## sizes is size(image to be written), cf. Dim_1 and Dim_2
4 ## datatype is string, cf. DataType
5 ## nbytes is number of bytes used for each written element
6 ## nimage is probably number of the image, used for writing multiple images in a single file?
9 ## * correct error in number of blanks to add to get multiple of 512 bytes header
10 ## * avoid sprintf, use double quotes
12 function header = writeheader(sizes,datatype,nbytes,nimage,headstruct)
14 header = sprintf("%s\n","{");
15 header = [header headerstring("HeaderID","EH:000001:000000:000000","string")];
16 header = [header headerstring("Image",nimage,"integer")];
17 header = [header headerstring("ByteOrder","HighByteFirst","string")];
18 header = [header headerstring("DataType",datatype,"string")];
19 header = [header headerstring("Dim_1",sizes(1),"integer")];
20 header = [header headerstring("Dim_2",sizes(2),"integer")];
21 header = [header headerstring("Size",nbytes*sizes(1)*sizes(2),"integer")];
22 header = [header headerstring("Date",date,"string")];
24 if ((nargin == 5) && (isstruct(headstruct) == 1))
25 ## If the structure exists, write the fields to the file
26 if (!isempty(headstruct))
27 names = fieldnames(headstruct);
28 for ii=1:length(names),
29 header = [header sprintf("%s",headerstring(names{ii},getfield(headstruct,names{ii}),...
30 class(getfield(headstruct,names{ii}))))];
35 ## Fill to next multiple of 512
36 lnspace = mod(length(header)+2, 512);
38 lnspace = 512-lnspace;
40 header = [header blanks(lnspace) "}\n"];