comparison toString.m @ 466:e1a59aafe99c

Add structArray to toString()
author Jonatan Werpers <jonatan@werpers.com>
date Tue, 01 Aug 2017 12:32:25 +0200
parents 2ccfe80e9b58
children
comparison
equal deleted inserted replaced
465:a5cebdaad10b 466:e1a59aafe99c
49 end 49 end
50 str = [str sprintf('%s}', value2string(c{end,end}))]; 50 str = [str sprintf('%s}', value2string(c{end,end}))];
51 end 51 end
52 52
53 function str = struct2string(s) 53 function str = struct2string(s)
54 if isscalar(s)
55 str = structScalar2string(s);
56 else
57 str = structArray2string(s);
58 end
59 end
60
61 function str = structScalar2string(s)
54 fn = fieldnames(s); 62 fn = fieldnames(s);
55 63
56 if length(fn) == 0 64 if length(fn) == 0
57 str = '{}'; 65 str = '{}';
58 return 66 return
66 end 74 end
67 value = s.(fn{end}); 75 value = s.(fn{end});
68 str = [str sprintf('%s: %s}',fn{end}, value2string(value))]; 76 str = [str sprintf('%s: %s}',fn{end}, value2string(value))];
69 end 77 end
70 78
79 function str = structArray2string(s)
80 fn = fieldnames(s);
81
82 if length(fn) == 0
83 str = '{}';
84 return
85 end
86
87 stringArray = cell(length(s)+1, length(fn)+1);
88
89 stringArray(1,2:end) = fn;
90
91 for i = 1:length(s)
92 stringArray{i+1,1} = i;
93 for j = 1:length(fn)
94 valueStr = value2string(s(i).(fn{j}));
95 stringArray{i+1,j+1} = valueStr;
96 end
97 end
98
99 tt = TextTable(stringArray);
100 tt.fmtArray(2:end, 1) = {'%d'};
101 tt.vertDiv = [1];
102 tt.horzDiv = [1];
103 str = tt.toString();
104 end
105
106
107