Mercurial > hg > ltpda
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 +