diff scripts/general/num2str.m @ 6975:0d11a12643f1

[project @ 2007-10-08 18:23:44 by jwe]
author jwe
date Mon, 08 Oct 2007 18:23:44 +0000
parents 69e864d21c11
children 6d0d8d621532
line wrap: on
line diff
--- a/scripts/general/num2str.m
+++ b/scripts/general/num2str.m
@@ -56,11 +56,16 @@
 	dgt1 = ceil (log10 (max (max (abs (real (x(:)))),
 				 max (abs (imag (x(:))))))) + 1;
 	dgt2 = dgt1 - (min (real (x(:))) >= 0);
-	fmt = sprintf("%%%dd%%+-%ddi  ", dgt2, dgt1);
+	
+	if (length (abs (x) == x) > 0)
+	  fmt = sprintf("%%%dg%%+-%dgi  ", dgt2, dgt1);
+	else
+	  fmt = sprintf("%%%dd%%+-%ddi  ", dgt2, dgt1);
+	endif
       elseif (isscalar (x))
-	fmt = "%.4g%-+.4gi";
+	fmt = "%.6g%-+.6gi";
       else
-	fmt = "%11.4g%-+11.4gi";
+	fmt = "%11.6g%-+11.6gi";
       endif
     endif
 
@@ -101,7 +106,7 @@
     endwhile
 
     tmp(length (tmp)) = "";
-    retval = split (tmp, "\n");
+    retval = strtrim (split (tmp, "\n"));
   else
     if (nargin == 2)
       if (ischar (arg))
@@ -120,18 +125,22 @@
 	else
 	  dgt = floor (log10 (max (abs(x(:))))) + (min (real (x(:))) < 0) + 1;
 	endif
-	fmt = sprintf ("%%%dd  ", dgt);
+	if (length (abs (x) == x) > 0)
+	  fmt = sprintf ("%%%dg  ", dgt);
+	else
+	  fmt = sprintf ("%%%dd  ", dgt);
+	endif
       elseif (isscalar (x))
-	fmt = "%.4g";
+	fmt = "%11.5g";
       else
-	fmt = "%11.4g";
+	fmt = "%11.5g";
       endif
     endif
     fmt = strcat (deblank (repmat (fmt, 1, columns (x))), "\n");
     nd = ndims (x);
     tmp = sprintf (fmt, permute (x, [2, 1, 3:nd]));
     tmp(length (tmp)) = "";
-    retval = split (tmp, "\n");
+    retval = strtrim (split (tmp, "\n"));
   endif
 
 endfunction