view 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
line wrap: on
line source
function UTIL_showStruct(structure, name, valuesOnly, terminator)
% showStruct prints out the values in a single structure
% using the format <name> '.' <fieled> ' = ' <value><terminator>
% e.g. 
% showStruct(params,'params')         % standard usage
%showStruct(params,'params', 0, ';')  % adds final comma
%showStruct(params,'params', 1)      % omits structure and field names

if nargin<3, valuesOnly=0; end
if nargin<4, terminator=[]; end

fields=fieldnames(eval('structure'));
for i=1:length(fields)
    % y is the contents of this field
    y=eval([ 'structure.' fields{i}]);
    if ischar(y),
        % strings
        if valuesOnly
            fprintf('\n%s', y)
        else
            fprintf('\n%s.%s=\t''%s%s''', name, fields{i},y,terminator)
        end
    elseif isnumeric(y)
        % arrays
        if length(y)>1
            % matrices and vectors
            [r c]=size(y);
            if r>c, y=y'; end   % make row vector from column vector
            [r c]=size(y);
            
            if r>10
                % large matrix
                fprintf('\n%s.%s=\t%g x %g matrix',name, fields{i}, r, c)
                
            elseif r>1
                % small matrix
                for row=1:r
                    fprintf('\n%s.%s(%1.0f)=\t%s;', name, fields{i},row, num2str(y(row,:)))
                end
                
            elseif c>20
                % long row vector
                fprintf('\n%s.%s=\t %g...   [%g element array]%s',name, fields{i}, y(1),c, terminator)
                
            else
                fprintf('\n%s.%s=\t[%s]%s', name, fields{i},num2str(y),terminator)
            end
        else
            % single valued arrays
            if valuesOnly
                fprintf('\n%s%s', num2str(y), terminator)
            else
                fprintf('\n%s.%s=\t%s%s', name, fields{i},num2str(y), terminator)
            end

        end % length (y)
    elseif iscell(y)
        fprintf('\n%s.%s=\t cell array', name, fields{i})
            
    elseif isstruct(y)
        fprintf('\n%s.%s=\t structure', name, fields{i})
    end     % isstr/ numeric

end         % field
fprintf('\n')