diff m-toolbox/classes/+utils/@xml/mat2str.m @ 0:f0afece42f48

Import.
author Daniele Nicolodi <nicolodi@science.unitn.it>
date Wed, 23 Nov 2011 19:22:13 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/m-toolbox/classes/+utils/@xml/mat2str.m	Wed Nov 23 19:22:13 2011 +0100
@@ -0,0 +1,54 @@
+% MAT2STR overloads the mat2str operator to set the precision at a central place.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% DESCRIPTION: MAT2STR overloads the mat2str operator to set the
+%              precision at a central place.
+%
+% CALL:        str = mat2str(number);
+%              str = mat2str(matrix);
+%
+% VERSION:     $Id: mat2str.m,v 1.2 2010/04/27 15:41:31 ingo Exp $
+%
+% HISTORY:     26-07-2007 Diepholz
+%                 Creation
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+function str = mat2str(number)
+  
+  MAX_PRECISION = 20;
+  
+  s = size(number);
+  if s(1) ~= 1 && s(2) ~= 1
+    str = mat2str(number, MAX_PRECISION);
+    
+  elseif isreal(number)
+    
+    % For vectors it is faster to use sprintf directly
+    if s(1) ~= s(2)
+      str = '[';
+    else
+      str = '';
+    end
+    if s(1) > s(2)
+      str = [str sprintf('%.17g;', number)];
+    else
+      str = [str sprintf('%.17g ', number)];
+    end
+    if s(1) ~= s(2)
+      str = [str(1:end-1) ']'];
+    else
+      str = str(1:end-1);
+    end
+    
+  else
+    str = mat2str(number, MAX_PRECISION);
+  end
+  
+  % Make sure that the string have brackets (necessary for eval(str))
+  if ~isempty(str) && str(1) ~= '['
+    str = ['[' str ']'];
+  end
+  
+end
+