-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathMergeStructures.m
More file actions
43 lines (38 loc) · 1.43 KB
/
MergeStructures.m
File metadata and controls
43 lines (38 loc) · 1.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
%% Merge two structures into one, assuming
%
% ARGUMENTS:
% options -- Structure containing fields that take precedence.
% defaults -- Structure containing fields to be added to options
% if they're missing.
%
% OUTPUT:
% options -- Structure containing original contents of options
% plus defaults in place of any unspecified options.
%
% USAGE:
%{
%Within a function that has options.iters etc as an argument
%Set default option values
defaults.Dynamics.BRRW = BRRW_ParameterDefaults('absence');
%
options.Dynamics.BRRW.nu_se = 42e-4;
options.Dynamics.BRRW = MergeStructures(options.Dynamics.BRRW, defaults.Dynamics.BRRW);
%}
%
% MODIFICATION HISTORY:
% SAK(06-01-2010) -- Original (Modified from CompleteOptions()).
% SAK(Nov 2013) -- Move to git, future modification history is
% there...
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function options = MergeStructures(options, defaults)
%
if nargin>1,
PossibleOptions = unique([fieldnames(options) ; fieldnames(defaults)]); %
%Assign defaults to any necessary but unsupplied options...
for ThisOption = 1:length(PossibleOptions),
if ~isfield(options, PossibleOptions{ThisOption}),
options.(PossibleOptions{ThisOption}) = defaults.(PossibleOptions{ThisOption});
end
end
end
end %function MergeStructures()