Mercurial > repos > public > sbplib
annotate SolutionFile.m @ 19:1644d000c304
Fixed bug in SolutionsFile.m. Updated calculateSolution to also save a function handle to the Discr constructor.
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Tue, 22 Sep 2015 17:10:51 +0200 |
parents | 4d8068cb5c65 |
children | 30b6e72db1a3 |
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 % keyHeaders |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
6 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
|
7 % entries |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
8 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
9 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
10 methods |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
11 function obj = SolutionFile(filename) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
12 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
13 obj.filename = filename; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
14 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
15 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
|
16 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
17 obj.matfile = matfile(filename,'Writable',true); |
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 = {}; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
22 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
23 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
24 % obj.keyHeaders = obj.matfile.keyHeaders; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
25 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
|
26 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
27 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
28 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
29 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
|
30 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
|
31 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
|
32 fprintf('[%d]: %s', i, struct2string(obj.keys{i})); |
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 if show_syntax |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
35 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
|
36 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
37 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
38 fprintf('\n'); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
39 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
40 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
41 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
42 % 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
|
43 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
|
44 I = 0; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
45 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
46 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
|
47 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
|
48 I = i; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
49 return |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
50 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
51 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
52 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
53 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
54 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
|
55 I = obj.getIndex(key); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
56 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
57 if I == 0 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
58 b = false; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
59 else |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
60 b = true; |
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 % 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
|
65 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
|
66 if ~obj.isKey(key); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
67 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
|
68 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
69 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
70 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
|
71 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
|
72 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
73 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
74 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
75 % 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
|
76 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
|
77 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
|
78 e = e{1}; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
79 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
80 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
81 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
|
82 obj.keys(I) = []; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
83 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
|
84 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
85 entries = obj.matfile.entries; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
86 entries(I) = []; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
87 obj.matfile.entries = entries; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
88 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
89 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
90 % 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
|
91 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
|
92 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
|
93 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
|
94 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
|
95 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
96 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
|
97 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
98 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
99 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
|
100 if obj.isKey(key); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
101 I = obj.getIndex(key); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
102 else |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
103 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
|
104 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
105 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
106 obj.keys{I} = key; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
107 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
|
108 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
|
109 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
110 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
111 function delete(obj, key) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
112 if ~obj.isKey(key); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
113 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
|
114 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
115 I = obj.getIndex(key); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
116 obj.deleteByIndex(I); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
117 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
118 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
119 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
120 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
121 % 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
|
122 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
|
123 keys = {}; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
124 entries = {}; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
125 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
|
126 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
|
127 i |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
128 obj.keys{i} |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
129 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
|
130 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
|
131 end |
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 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
135 % Returns true if the the fields of struct a exists in A and have the same values |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
136 function b = structIsSubset(a,A) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
137 fn = fieldnames(a); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
138 |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
139 b = true; % if a has no filds |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
140 for j = 1:length(fn) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
141 fname = fn{j}; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
142 value = a.(fname); |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
143 if isfield(A,fname) && a.(fname) == A.(fname) |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
144 b = true; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
145 continue; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
146 else |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
147 b = false; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
148 break; |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
149 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
150 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
151 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
152 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
153 end |
6b9b2283e7ed
Added class for handleing .mat files as a key-value store.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
154 |
18
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
155 methods(Static) |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
156 function merge(fn1, fn2, fnNew) |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
157 sf1 = SolutionFile(fn1); |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
158 sf2 = SolutionFile(fn2); |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
159 |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
160 sfNew = SolutionFile(fnNew); |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
161 |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
162 sfNew.keys = sf1.keys; |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
163 sfNew.matfile.keys = sf1.keys; |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
164 sfNew.matfile.entries = sf1.matfile.entries; |
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 for i = 1:length(sf2.keys) |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
167 if sfNew.isKey(sf2.keys{i}) |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
168 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
|
169 end |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
170 sfNew.store(sf2.keys{i},sf2.getEntryByIndex(i)); |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
171 end |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
172 end |
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 |
4d8068cb5c65
Added function to merge SolutionFiles.
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
175 end |