annotate TextTable.m @ 918:679f4ddd982f feature/timesteppers

Add properties for stage approximations and stage rates in the Rungekutta class.
author Martin Almquist <malmquist@stanford.edu>
date Mon, 26 Nov 2018 16:23:27 -0800
parents 11a39b274260
children f30eafd6d4dc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
465
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
1 classdef TextTable < handle
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
2 properties
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
3 data
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
4 fmtArray
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
5 vertDiv
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
6 horzDiv
271
3c25601f1fe3 Started adding a function for texttables.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
7 end
3c25601f1fe3 Started adding a function for texttables.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
8
465
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
9 methods
659
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
10 function obj = TextTable(data, vertDiv, horzDiv)
465
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
11 default_arg('vertDiv', []);
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
12 default_arg('horzDiv', []);
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
13
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
14 obj.data = data;
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
15 obj.vertDiv = vertDiv;
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
16 obj.horzDiv = horzDiv;
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
17
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
18 obj.fmtArray = cell(size(data));
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
19 obj.formatAll('%s');
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
20
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
21 end
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
22
659
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
23 function n = nRows(obj)
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
24 n = size(obj.data, 1);
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
25 end
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
26
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
27 function n = nCols(obj)
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
28 n = size(obj.data, 2);
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
29 end
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
30
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
31 function print(obj)
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
32 disp(obj.toString());
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
33 end
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
34
465
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
35 function formatAll(obj, fmt)
659
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
36 obj.fmtArray = cell(size(obj.data));
465
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
37 obj.fmtArray(:,:) = {fmt};
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
38 end
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
39
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
40 function formatCell(obj, i, j, fmt)
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
41 obj.fmtArray{i,j} = fmt;
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
42 end
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
43
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
44 function formatRow(obj, i, fmt)
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
45 obj.fmtArray(i,:) = {fmt};
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
46 end
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
47
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
48 function formatColumn(obj, j, fmt)
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
49 obj.fmtArray(:,j) = {fmt};
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
50 end
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
51
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
52 function widths = getWidths(obj)
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
53 strArray = obj.getStringArray();
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
54
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
55 widths = zeros(1,obj.nCols);
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
56 for j = 1:obj.nCols
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
57 for i = 1:obj.nRows
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
58 widths(j) = max(widths(j), length(strArray{i,j}));
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
59 end
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
60 end
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
61 end
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
62
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
63 function str = toString(obj)
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
64 strArray = obj.getStringArray();
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
65 widths = obj.getWidths();
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
66
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
67 str = '';
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
68
659
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
69 N = size(strArray, 2);
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
70
465
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
71 % First horzDiv
659
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
72 if isDiv(0, obj.horzDiv, N);
465
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
73 str = [str, obj.getHorzDiv(widths)];
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
74 end
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
75
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
76 for i = 1:obj.nRows
659
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
77 str = [str, TextTable.rowToString(strArray(i,:), widths, obj.vertDiv)];
465
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
78
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
79 % Interior horzDiv
659
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
80 if isDiv(i, obj.horzDiv, N)
465
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
81 str = [str, obj.getHorzDiv(widths)];
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
82 end
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
83 end
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
84 end
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
85
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
86 function str = getHorzDiv(obj, widths)
659
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
87 str = TextTable.rowToString(cell(1,obj.nCols), widths, obj.vertDiv);
465
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
88 str(find(' ' == str)) = '-';
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
89 str(find('|' == str)) = '+';
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
90 end
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
91
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
92 function strArray = getStringArray(obj)
659
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
93 assert(all(size(obj.data) == size(obj.fmtArray)), 'Sizes of format matrix and data matrix do not match.')
465
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
94 strArray = cell(size(obj.data));
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
95
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
96 for i = 1:obj.nRows
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
97 for j = 1:obj.nCols
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
98 strArray{i,j} = sprintf(obj.fmtArray{i,j}, obj.data{i,j});
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
99 end
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
100 end
286
fdee7f66a5e9 plainTextTable working.
Martin Almquist <martin.almquist@it.uu.se>
parents: 271
diff changeset
101 end
fdee7f66a5e9 plainTextTable working.
Martin Almquist <martin.almquist@it.uu.se>
parents: 271
diff changeset
102 end
271
3c25601f1fe3 Started adding a function for texttables.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
103
465
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
104 methods (Static)
659
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
105 function str = rowToString(strs, widths, vertDiv)
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
106 N = length(strs);
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
107
465
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
108 % First vertDiv
659
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
109 if isDiv(0, vertDiv, N)
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
110 prefix = '| ';
465
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
111 else
659
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
112 prefix = ' ';
465
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
113 end
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
114
659
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
115 % Pad strings
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
116 for i = 1:N
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
117 strs{i} = sprintf('%*s', widths(i), strs{i});
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
118 end
271
3c25601f1fe3 Started adding a function for texttables.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
119
659
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
120 % Column delimiters
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
121 delims = cell(1,N-1);
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
122 for i = 1:length(delims)
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
123 if isDiv(i, vertDiv, N);
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
124 delims{i} = '| ';
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
125 else
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
126 delims{i} = ' ';
465
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
127 end
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
128 end
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
129
659
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
130 if isDiv(N, vertDiv, N);
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
131 suffix = '|';
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
132 else
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
133 suffix = '';
465
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
134 end
a5cebdaad10b Implement a simple but general text table
Jonatan Werpers <jonatan@werpers.com>
parents: 286
diff changeset
135
659
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
136 str = [prefix, strjoin(strs, delims), suffix, sprintf('\n')];
271
3c25601f1fe3 Started adding a function for texttables.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
137 end
3c25601f1fe3 Started adding a function for texttables.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
138 end
659
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
139 end
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
140
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
141 function b = isDiv(i, div, N)
11a39b274260 Make data more flexible, add print method, allow negative devider index
Jonatan Werpers <jonatan@werpers.com>
parents: 465
diff changeset
142 b = ismember(i, div) || ismember(i, N+div+1);
271
3c25601f1fe3 Started adding a function for texttables.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
143 end