| 1 | function NewField = concatstruct(OldField1,OldField2); | 
| 2 |  | 
| 3 | name1=fieldnames(OldField1); | 
| 4 | name2=fieldnames(OldField2); | 
| 5 |  | 
| 6 | if size(name1,1) ~= size(name2,1) | 
| 7 | disp('The 2 structures must have the same number of fields') | 
| 8 | NewField=[]; | 
| 9 | return | 
| 10 | end | 
| 11 |  | 
| 12 | NewField=[]; | 
| 13 |  | 
| 14 | for i=1:size(name1,1) | 
| 15 | if char(name1(i)) ==  char(name2(i)) | 
| 16 | nameloc = char(name1(i)); | 
| 17 | disp(['Field : ',nameloc]) | 
| 18 | %size(getfield(OldField1,nameloc)); | 
| 19 |  | 
| 20 | if strcmp(nameloc,'T') | 
| 21 | disp(['    concatenating, 1d']) | 
| 22 | NewField=setfield(NewField,nameloc, ... | 
| 23 | cat(1,getfield(OldField1,nameloc),getfield(OldField2,nameloc))); | 
| 24 | elseif strcmp(nameloc,'iter') | 
| 25 | disp(['    concatenating, 1d']) | 
| 26 | NewField=setfield(NewField,nameloc, ... | 
| 27 | cat(1,getfield(OldField1,nameloc),getfield(OldField2,nameloc))); | 
| 28 | elseif ( strcmp(nameloc,'iters_read_from_file') | strcmp(nameloc,'iters_from_file') ) | 
| 29 | disp(['    concatenating, 1d']) | 
| 30 | NewField=setfield(NewField,nameloc, ... | 
| 31 | cat(1,getfield(OldField1,nameloc),getfield(OldField2,nameloc))); | 
| 32 | elseif ndims(getfield(OldField2,nameloc)) == 4 | 
| 33 | disp(['    concatenating, 4d']) | 
| 34 | NewField=setfield(NewField,nameloc, ... | 
| 35 | cat(4,getfield(OldField1,nameloc),getfield(OldField2,nameloc))); | 
| 36 |  | 
| 37 | elseif ndims(getfield(OldField2,nameloc)) == 3 | 
| 38 | if length(getfield(OldField2,'iters_from_file')) == 1 | 
| 39 | disp(['    concatenating, 4d']) | 
| 40 | NewField=setfield(NewField,nameloc, ... | 
| 41 | cat(4,getfield(OldField1,nameloc),getfield(OldField2,nameloc))); | 
| 42 | else | 
| 43 | disp(['    concatenating, 3d']) | 
| 44 | NewField=setfield(NewField,nameloc, ... | 
| 45 | cat(3,getfield(OldField1,nameloc),getfield(OldField2,nameloc))); | 
| 46 | end | 
| 47 | elseif ndims(getfield(OldField2,nameloc)) == 2 | 
| 48 | disp(['    concatenating, 2d']) | 
| 49 | NewField=setfield(NewField,nameloc, ... | 
| 50 | cat(3,getfield(OldField1,nameloc),getfield(OldField2,nameloc))); | 
| 51 | %   elseif strcmp(nameloc,'iters_from_file') | 
| 52 | % disp(['    concatenating, 1d']) | 
| 53 | % NewField=setfield(NewField,nameloc, ... | 
| 54 | %   cat(1,getfield(OldField1,nameloc),getfield(OldField2,nameloc))); | 
| 55 | else | 
| 56 | disp(['    replacing']) | 
| 57 | NewField=setfield(NewField,nameloc,getfield(OldField1,nameloc)); | 
| 58 |  | 
| 59 | end | 
| 60 |  | 
| 61 | end | 
| 62 | end | 
| 63 |  | 
| 64 |  | 
| 65 | return |