0001 function txt = display(p, varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015 VERSION = '$Id: display2.m,v 1.1 2008/03/05 15:54:05 ingo Exp $';
0016 CATEGORY = 'Output';
0017
0018
0019 if nargin == 2
0020 if isa(p, 'param') && ischar(varargin{1})
0021 in = char(varargin{1});
0022 if strcmp(in, 'Params')
0023 txt = plist();
0024 return
0025 elseif strcmp(in, 'Version')
0026 txt = VERSION;
0027 return
0028 elseif strcmp(in, 'Category')
0029 txt = CATEGORY;
0030 return
0031 end
0032 end
0033 end
0034
0035 txt = {};
0036
0037 for i=1:numel(p)
0038 banner = sprintf('---- param %d ----', i);
0039 txt{end+1} = banner;
0040
0041
0042 name = get(p(i), 'key');
0043 v = get(p(i), 'val');
0044
0045 txt{end+1} = ['key: ' name];
0046
0047
0048 txt = main(txt, 'val: ', v);
0049
0050 banner_end(1:length(banner)) = '-';
0051 txt{end+1} = banner_end;
0052
0053 end
0054
0055 if nargout == 0
0056 char(txt)
0057 end
0058
0059 end
0060
0061 function txt = main(txt, prefix, val)
0062
0063
0064 if isstruct(val)
0065
0066 fields = fieldnames(val);
0067 txt{end+1} = [prefix, 'structure'];
0068 for ii=1:length(fields)
0069 field = fields{ii};
0070 prefix(1:end) = ' ';
0071 new_prefix = [prefix field ': '];
0072 txt = main(txt, new_prefix, val.(field));
0073 end
0074
0075
0076 elseif iscell(val)
0077
0078 if prefix(end) == '[', prefix = prefix(1:end-1); end
0079
0080 txt{end+1} = sprintf('%scell-array {%dx%d}', prefix, size(val,1), size(val,2));
0081 for ii = 1:size(val,1)
0082 for jj = 1:size(val,2)
0083 prefix(1:end) = ' ';
0084 if ischar(val{ii,jj})
0085 new_prefix = sprintf('%s{%d,%d} ', prefix, ii, jj);
0086 else
0087 new_prefix = sprintf('%s{%d,%d} [', prefix, ii, jj);
0088 end
0089 txt = main(txt, new_prefix, val{ii,jj});
0090 if ~ischar(val{ii,jj}) && txt{end}(end) ~= ']';
0091 txt{end}(end+1) = ']';
0092 end
0093 end
0094 end
0095
0096 else
0097 if numel(val) > 1
0098 txt = atomic_value(txt, prefix, val, true);
0099 else
0100 txt = atomic_value(txt, prefix, val, false);
0101 end
0102 end
0103 end
0104
0105
0106 function txt = atomic_value(txt, prefix, val, disp_class_only)
0107
0108
0109 if ischar(val)
0110 if length(val) > 45
0111 txt{end+1} = [prefix '''' val(1:45) ' ...'''];
0112 else
0113 txt{end+1} = [prefix '''' val ''''];
0114 end
0115
0116
0117 elseif islogical(val)
0118 if val == true
0119 txt{end+1} = [prefix 'true'];
0120 else
0121 txt{end+1} = [prefix 'false'];
0122 end
0123
0124
0125 elseif isnumeric(val)
0126 sval = '';
0127 if size(val,1) == 1 || size(val,2) == 1
0128 for j=1:min(length(val), 10)
0129 sval = [sval sprintf('%g ', val(j))];
0130 end
0131 if length(val) > 10
0132 sval = [sval '...'];
0133 end
0134 if sval(end) == ' '
0135 sval = sval(1:end-1);
0136 end
0137 elseif isempty(val)
0138 if prefix(end) == '[', prefix = prefix(1:end-1); end
0139 sval = '[]';
0140 else
0141 sval = sprintf('matrix [%dx%d]', size(val,1), size(val,2));
0142 end
0143 txt{end+1} = [prefix sval];
0144
0145
0146 elseif isa(val, 'sym')
0147 txt{end+1} = [prefix char(val)];
0148
0149
0150 elseif isa(val, 'pole') || isa(val, 'zero') || isa(val, 'pzmodel')
0151 sval = '';
0152 for j=1:length(val)
0153 sval = [sval char(val(j)) ', '];
0154 end
0155 sval = sval(1:end-2);
0156 txt{end+1} = [prefix sval];
0157
0158 elseif disp_class_only
0159 if prefix(end) == '[', prefix = prefix(1:end-1); end
0160
0161 txt{end+1} = sprintf('%s[%dx%d %s]', prefix, size(val,1), size(val,2), class(val));
0162
0163
0164 elseif isa(val, 'specwin');
0165 txt{end+1} = [prefix 'spectral window'];
0166 prefix(1:end) = ' ';
0167 txt{end+1} = [prefix 'name = ' val.name];
0168 txt{end+1} = [prefix 'alpha = ' num2str(val.alpha)];
0169 txt{end+1} = [prefix 'psll = ' num2str(val.psll)];
0170 txt{end+1} = [prefix 'rov = ' num2str(val.rov)];
0171 txt{end+1} = [prefix 'nenbw = ' num2str(val.nenbw)];
0172 txt{end+1} = [prefix 'w3db = ' num2str(val.w3db)];
0173 txt{end+1} = [prefix 'flatness = ' num2str(val.flatness)];
0174
0175
0176 elseif isa(val, 'provenance')
0177 txt{end+1} = [prefix val.creator '@' val.hostname ' (' val.ip ')'];
0178
0179
0180 elseif isa(val, 'miir') || isa(val, 'mfir')
0181 txt{end+1} = [prefix char(val)];
0182
0183
0184 elseif isa(val, 'time') || isa(val, 'timespan') || isa(val, 'timeformat')
0185 txt{end+1} = [prefix char(val)];
0186
0187
0188
0189
0190
0191 elseif isa(val, 'ao') || isa(val, 'fsdata') || isa(val, 'tsdata') || ...
0192 isa(val, 'cdata') || isa(val, 'xydata') || isa(val, 'plist') || ...
0193 isa(val, 'param') || isa(val, 'history')
0194 vinfo = whos('val');
0195 txt{end+1} = [prefix vinfo.class '-object'];
0196
0197
0198 elseif isjava(val)
0199 txt{end+1} = [prefix class(val)];
0200
0201 else
0202 if isobject(val)
0203 txt{end+1} = sprintf('%s<%s>', prefix, class(val));
0204 else
0205 txt{end+1} = sprintf('%s<unknown type>', prefix);
0206 end
0207 end
0208
0209 end
0210
0211
0212
0213
0214
0215
0216
0217
0218
0219