]> Creatis software - CreaPhase.git/blobdiff - utilities_ESRF/edfwrite.m
useful functions for simulations, created by ESRF people mainly (free to use)
[CreaPhase.git] / utilities_ESRF / edfwrite.m
diff --git a/utilities_ESRF/edfwrite.m b/utilities_ESRF/edfwrite.m
new file mode 100644 (file)
index 0000000..d69c77d
--- /dev/null
@@ -0,0 +1,50 @@
+## function count=edfwrite(filename,matrix,datatype,head)
+## writes an image in esrf data format
+## 
+## datatype can be
+##     uint8   = 8 bits        = UnsignedByte
+##     uint16  = 16 bits       = UnsignedShort
+##     uint32  = 32 bits       = UnsignedLong = UnsignedInteger
+##     float32 =               = Float = Real
+##     float64 =               = DoubleValue = Double
+## writes bigendian files
+##
+## head (optional) is a structure whose fields are written to the file
+##
+## 30.09.2009 (HSu): Modified to write header structures 
+function count=edfwrite(filename,matrix,datatype,varargin)
+
+  switch nargin
+    case 3
+      head=[];
+    case 4
+      head=varargin{1};
+  end
+
+  switch datatype
+    case 'uint8',
+      esrfdatatype='UnsignedByte';
+      nbytes=1;
+    case 'uint16',
+      esrfdatatype='UnsignedShort';
+      nbytes=2;
+    case 'uint32',
+      esrfdatatype='UnsignedLong';
+      nbytes=4;
+    case 'float32',
+      esrfdatatype='Float';
+      nbytes=4;
+    case 'float64',
+      esrfdatatype='DoubleValue';
+      nbytes=8;
+  end
+
+  if isempty(head) || isstruct(head)
+    head=writeheader(size(matrix),esrfdatatype,nbytes,1,head);
+  end
+
+  fid=fopen(filename,'w','b');
+  fwrite(fid,head);
+  fwrite(fid,matrix,datatype);
+  fclose(fid);
+endfunction