Mercurial > repos > public > sbplib
annotate SolutionFile.m @ 87:0a29a60e0b21
In Curve: Rearranged for speed. arc_length_fun is now a property of Curve. If it is not supplied, it is computed via the derivative and spline fitting. Switching to the arc length parameterization is much faster now. The new stuff can be tested with testArcLength.m (which should be deleted after that).
author | Martin Almquist <martin.almquist@it.uu.se> |
---|---|
date | Sun, 29 Nov 2015 22:23:09 +0100 |
parents | dd4db0c97a02 |
children | 8298734b1938 |
rev | line source |
---|---|
9
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
1 classdef SolutionFile < handle |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
2 properties |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
3 filename |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
4 matfile |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
5 keys % Cell array of keys. Each key is a structure |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
6 % entries |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
7 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
8 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
9 methods |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
10 function obj = SolutionFile(filename) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
11 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
12 obj.filename = filename; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
13 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
14 is_new_file = ~exist(filename,'file'); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
15 |
32
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
16 % obj.matfile = matfile(filename,'Writable',true); |
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
17 fprintf('MATLAB SUCKS!!!!\n') |
9
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
18 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
19 if is_new_file |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
20 obj.matfile.keys = {}; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
21 obj.matfile.entries = {}; |
32
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
22 else |
35
61367018c46f
Stoped using matFile object in SolutionFile. Changed to load for performance.
Jonatan Werpers <jonatan@werpers.com>
parents:
32
diff
changeset
|
23 loadStruct = load(filename); |
61367018c46f
Stoped using matFile object in SolutionFile. Changed to load for performance.
Jonatan Werpers <jonatan@werpers.com>
parents:
32
diff
changeset
|
24 obj.matfile.keys = loadStruct.keys; |
61367018c46f
Stoped using matFile object in SolutionFile. Changed to load for performance.
Jonatan Werpers <jonatan@werpers.com>
parents:
32
diff
changeset
|
25 obj.matfile.entries = loadStruct.entries; |
61367018c46f
Stoped using matFile object in SolutionFile. Changed to load for performance.
Jonatan Werpers <jonatan@werpers.com>
parents:
32
diff
changeset
|
26 |
61367018c46f
Stoped using matFile object in SolutionFile. Changed to load for performance.
Jonatan Werpers <jonatan@werpers.com>
parents:
32
diff
changeset
|
27 % matObj = matfile(filename,'Writable',true); |
61367018c46f
Stoped using matFile object in SolutionFile. Changed to load for performance.
Jonatan Werpers <jonatan@werpers.com>
parents:
32
diff
changeset
|
28 % obj.matfile.keys = matObj.keys; |
61367018c46f
Stoped using matFile object in SolutionFile. Changed to load for performance.
Jonatan Werpers <jonatan@werpers.com>
parents:
32
diff
changeset
|
29 % obj.matfile.entries = matObj.entries; |
9
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
30 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
31 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
32 obj.keys = obj.matfile.keys; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
33 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
34 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
35 |
32
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
36 function stupidSave(obj) |
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
37 matObj = matfile(obj.filename,'Writable',true); |
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
38 |
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
39 keys = obj.matfile.keys; |
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
40 entries = obj.matfile.entries; |
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
41 |
35
61367018c46f
Stoped using matFile object in SolutionFile. Changed to load for performance.
Jonatan Werpers <jonatan@werpers.com>
parents:
32
diff
changeset
|
42 if exist(obj.filename,'file') |
61367018c46f
Stoped using matFile object in SolutionFile. Changed to load for performance.
Jonatan Werpers <jonatan@werpers.com>
parents:
32
diff
changeset
|
43 delete(obj.filename); |
61367018c46f
Stoped using matFile object in SolutionFile. Changed to load for performance.
Jonatan Werpers <jonatan@werpers.com>
parents:
32
diff
changeset
|
44 end |
32
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
45 |
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
46 matObj = matfile(obj.filename,'Writable',true); |
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
47 matObj.keys = keys; |
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
48 matObj.entries = entries; |
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
49 end |
ddfb98209aa2
Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
24
diff
changeset
|
50 |
9
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
51 function list(obj, show_syntax) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
52 default_arg('show_syntax',false); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
53 for i = 1:length(obj.keys) |
46
dd4db0c97a02
Updated SolutionFile to use the new toString Method.
Jonatan Werpers <jonatan@werpers.com>
parents:
35
diff
changeset
|
54 fprintf('[%d]: %s', i, toString(obj.keys{i})); |
9
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
55 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
56 if show_syntax |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
57 fprintf('\t%s',struct2syntax(obj.keys{i})); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
58 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
59 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
60 fprintf('\n'); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
61 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
62 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
63 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
64 % Returns the index for a key. Returns 0 if the key doesn't exist |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
65 function I = getIndex(obj, key) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
66 I = 0; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
67 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
68 for i = 1:length(obj.keys) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
69 if isequal(key,obj.keys{i}); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
70 I = i; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
71 return |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
72 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
73 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
74 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
75 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
76 function b = isKey(obj, key) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
77 I = obj.getIndex(key); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
78 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
79 if I == 0 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
80 b = false; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
81 else |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
82 b = true; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
83 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
84 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
85 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
86 % Gets entries where key match exactly. |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
87 function e = get(obj, key) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
88 if ~obj.isKey(key); |
35
61367018c46f
Stoped using matFile object in SolutionFile. Changed to load for performance.
Jonatan Werpers <jonatan@werpers.com>
parents:
32
diff
changeset
|
89 key |
9
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
90 error('No such key: %s', struct2string(key)); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
91 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
92 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
93 I = obj.getIndex(key); |
19
1644d000c304
Fixed bug in SolutionsFile.m. Updated calculateSolution to also save a function handle to the Discr constructor.
Jonatan Werpers <jonatan@werpers.com>
parents:
18
diff
changeset
|
94 e = obj.getEntryByIndex(I); % unpack the cell array |
9
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
95 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
96 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
97 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
98 % Handles indexing weirdness of matfile class |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
99 function e = getEntryByIndex(obj, I) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
100 e = obj.matfile.entries(1,I); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
101 e = e{1}; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
102 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
103 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
104 function e = deleteByIndex(obj, I) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
105 obj.keys(I) = []; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
106 obj.matfile.keys = obj.keys; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
107 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
108 entries = obj.matfile.entries; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
109 entries(I) = []; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
110 obj.matfile.entries = entries; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
111 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
112 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
113 % Handles indexing weirdness of matfile class |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
114 function setEntryByIndex(obj,I, entry, force_flag) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
115 default_arg('force_flag',false); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
116 if ~force_flag && ( I < 1 || I > length(obj.keys)) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
117 error('I is out of range. I = %d',I); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
118 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
119 obj.matfile.entries(1,I) = {entry}; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
120 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
121 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
122 function store(obj, key, entry) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
123 if obj.isKey(key); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
124 I = obj.getIndex(key); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
125 else |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
126 I = length(obj.keys) + 1; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
127 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
128 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
129 obj.keys{I} = key; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
130 obj.matfile.keys = obj.keys; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
131 obj.setEntryByIndex(I,entry,true); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
132 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
133 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
134 function delete(obj, key) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
135 if ~obj.isKey(key); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
136 error('No such key: %s', struct2string(key)); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
137 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
138 I = obj.getIndex(key); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
139 obj.deleteByIndex(I); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
140 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
141 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
142 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
143 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
144 % Gets entries where the defined parts of partial_key matches the key of the entry |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
145 function [keys, entries] = find(obj,partial_key) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
146 keys = {}; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
147 entries = {}; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
148 for i = 1:length(obj.keys) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
149 if structIsSubset(partial_key,obj.keys{i}) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
150 i |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
151 obj.keys{i} |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
152 keys{end + 1} = obj.keys{i}; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
153 entries{end + 1} = obj.getEntryByIndex(i); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
154 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
155 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
156 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
157 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
158 |
18
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
159 methods(Static) |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
160 function merge(fn1, fn2, fnNew) |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
161 sf1 = SolutionFile(fn1); |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
162 sf2 = SolutionFile(fn2); |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
163 |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
164 sfNew = SolutionFile(fnNew); |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
165 |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
166 sfNew.keys = sf1.keys; |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
167 sfNew.matfile.keys = sf1.keys; |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
168 sfNew.matfile.entries = sf1.matfile.entries; |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
169 |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
170 for i = 1:length(sf2.keys) |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
171 if sfNew.isKey(sf2.keys{i}) |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
172 warning('Key ''%s'' exists in both files!',struct2string(sf2.keys{i})); |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
173 end |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
174 sfNew.store(sf2.keys{i},sf2.getEntryByIndex(i)); |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
175 end |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
176 end |
24
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
177 |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
178 |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
179 function b = keyIsEqual(key1,key2) |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
180 b = isequal(key1, key2); |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
181 end |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
182 |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
183 function b = keyIsIn(key,keys) |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
184 b = false; |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
185 for i = 1:length(keys) |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
186 b = isequal(key, keys{i}); |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
187 if b |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
188 return |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
189 end |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
190 end |
986e3efd8543
Added some utility functions to SolutionFile.m
Jonatan Werpers <jonatan@werpers.com>
parents:
22
diff
changeset
|
191 end |
18
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
192 end |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
193 |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
194 end |