0001 function s_out = mergestructs(s_in, varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 if ischar(s_in) && strcmp(s_in,'UNIT_TEST'); do_unit_test; return; end
0017
0018 s_out = s_in;
0019
0020 for i = 1:length(varargin);
0021 ssi = varargin{i};
0022 if ~isstruct(ssi); error('Mergestructs: only struct args'); end
0023 for fn = fieldnames(ssi)'
0024 s_out.( fn{1} ) = ssi.( fn{1} );
0025 end
0026 end
0027
0028 function do_unit_test
0029 s1 = struct('a',1,'b',2);
0030 s2 = struct('c',5,'b',3);
0031 s3 = struct('d',6,'b',4);
0032
0033 so = mergestructs(s1);
0034 unit_test_cmp('1 arg',so,s1);
0035
0036 so = mergestructs(s1,s2);
0037 so2= struct('a',1,'b',3,'c',5);
0038 unit_test_cmp('2 arg',so,so2);
0039
0040 so = mergestructs(s1,s2,s3);
0041 so3= struct('a',1,'b',4,'c',5,'d',6);
0042 unit_test_cmp('3 arg',so,so3);