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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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