annotate utilities/UTIL_showStruct.m @ 38:c2204b18f4a2 tip

End nov big change
author Ray Meddis <rmeddis@essex.ac.uk>
date Mon, 28 Nov 2011 13:34:28 +0000
parents f233164f4c86
children
rev   line source
rmeddis@0 1 function UTIL_showStruct(structure, name, valuesOnly, terminator)
rmeddis@0 2 % showStruct prints out the values in a single structure
rmeddis@0 3 % using the format <name> '.' <fieled> ' = ' <value><terminator>
rmeddis@0 4 % e.g.
rmeddis@0 5 % showStruct(params,'params') % standard usage
rmeddis@0 6 %showStruct(params,'params', 0, ';') % adds final comma
rmeddis@0 7 %showStruct(params,'params', 1) % omits structure and field names
rmeddis@0 8
rmeddis@0 9 if nargin<3, valuesOnly=0; end
rmeddis@0 10 if nargin<4, terminator=[]; end
rmeddis@0 11
rmeddis@0 12 fields=fieldnames(eval('structure'));
rmeddis@0 13 for i=1:length(fields)
rmeddis@0 14 % y is the contents of this field
rmeddis@0 15 y=eval([ 'structure.' fields{i}]);
rmeddis@0 16 if ischar(y),
rmeddis@0 17 % strings
rmeddis@0 18 if valuesOnly
rmeddis@0 19 fprintf('\n%s', y)
rmeddis@0 20 else
rmeddis@0 21 fprintf('\n%s.%s=\t''%s%s''', name, fields{i},y,terminator)
rmeddis@0 22 end
rmeddis@0 23 elseif isnumeric(y)
rmeddis@0 24 % arrays
rmeddis@0 25 if length(y)>1
rmeddis@0 26 % matrices and vectors
rmeddis@0 27 [r c]=size(y);
rmeddis@0 28 if r>c, y=y'; end % make row vector from column vector
rmeddis@0 29 [r c]=size(y);
rmeddis@0 30
rmeddis@0 31 if r>10
rmeddis@0 32 % large matrix
rmeddis@0 33 fprintf('\n%s.%s=\t%g x %g matrix',name, fields{i}, r, c)
rmeddis@0 34
rmeddis@0 35 elseif r>1
rmeddis@0 36 % small matrix
rmeddis@0 37 for row=1:r
rmeddis@0 38 fprintf('\n%s.%s(%1.0f)=\t%s;', name, fields{i},row, num2str(y(row,:)))
rmeddis@0 39 end
rmeddis@0 40
rmeddis@0 41 elseif c>20
rmeddis@0 42 % long row vector
rmeddis@0 43 fprintf('\n%s.%s=\t %g... [%g element array]%s',name, fields{i}, y(1),c, terminator)
rmeddis@0 44
rmeddis@0 45 else
rmeddis@0 46 fprintf('\n%s.%s=\t[%s]%s', name, fields{i},num2str(y),terminator)
rmeddis@0 47 end
rmeddis@0 48 else
rmeddis@0 49 % single valued arrays
rmeddis@0 50 if valuesOnly
rmeddis@0 51 fprintf('\n%s%s', num2str(y), terminator)
rmeddis@0 52 else
rmeddis@0 53 fprintf('\n%s.%s=\t%s%s', name, fields{i},num2str(y), terminator)
rmeddis@0 54 end
rmeddis@0 55
rmeddis@0 56 end % length (y)
rmeddis@0 57 elseif iscell(y)
rmeddis@0 58 fprintf('\n%s.%s=\t cell array', name, fields{i})
rmeddis@0 59
rmeddis@0 60 elseif isstruct(y)
rmeddis@0 61 fprintf('\n%s.%s=\t structure', name, fields{i})
rmeddis@0 62 end % isstr/ numeric
rmeddis@0 63
rmeddis@0 64 end % field
rmeddis@0 65 fprintf('\n')