]> Creatis software - CreaPhase.git/blob - utilities_ESRF/edfwrite.m
useful functions for simulations, created by ESRF people mainly (free to use)
[CreaPhase.git] / utilities_ESRF / edfwrite.m
1 ## function count=edfwrite(filename,matrix,datatype,head)
2 ## writes an image in esrf data format
3 ## 
4 ## datatype can be
5 ##      uint8   = 8 bits        = UnsignedByte
6 ##      uint16  = 16 bits       = UnsignedShort
7 ##      uint32  = 32 bits       = UnsignedLong = UnsignedInteger
8 ##      float32 =               = Float = Real
9 ##      float64 =               = DoubleValue = Double
10 ## writes bigendian files
11 ##
12 ## head (optional) is a structure whose fields are written to the file
13 ##
14 ## 30.09.2009 (HSu): Modified to write header structures 
15 function count=edfwrite(filename,matrix,datatype,varargin)
16
17   switch nargin
18     case 3
19       head=[];
20     case 4
21       head=varargin{1};
22   end
23
24   switch datatype
25     case 'uint8',
26       esrfdatatype='UnsignedByte';
27       nbytes=1;
28     case 'uint16',
29       esrfdatatype='UnsignedShort';
30       nbytes=2;
31     case 'uint32',
32       esrfdatatype='UnsignedLong';
33       nbytes=4;
34     case 'float32',
35       esrfdatatype='Float';
36       nbytes=4;
37     case 'float64',
38       esrfdatatype='DoubleValue';
39       nbytes=8;
40   end
41
42   if isempty(head) || isstruct(head)
43     head=writeheader(size(matrix),esrfdatatype,nbytes,1,head);
44   end
45
46   fid=fopen(filename,'w','b');
47   fwrite(fid,head);
48   fwrite(fid,matrix,datatype);
49   fclose(fid);
50 endfunction