/[MITgcm]/MITgcm_contrib/dfer/matlab_stuff/concatstruct.m
ViewVC logotype

Annotation of /MITgcm_contrib/dfer/matlab_stuff/concatstruct.m

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (hide annotations) (download)
Mon Feb 15 18:44:46 2010 UTC (15 years, 5 months ago) by dfer
Branch: MAIN
Missing piece

1 dfer 1.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 ndims(getfield(OldField2,nameloc)) == 4
21     disp([' concatenating, 4d'])
22     NewField=setfield(NewField,nameloc, ...
23     cat(4,getfield(OldField1,nameloc),getfield(OldField2,nameloc)));
24    
25     elseif ndims(getfield(OldField2,nameloc)) == 3
26     if length(getfield(OldField2,'iters_read_from_file')) == 1
27     disp([' concatenating, 4d'])
28     NewField=setfield(NewField,nameloc, ...
29     cat(4,getfield(OldField1,nameloc),getfield(OldField2,nameloc)));
30     else
31     disp([' concatenating, 3d'])
32     NewField=setfield(NewField,nameloc, ...
33     cat(3,getfield(OldField1,nameloc),getfield(OldField2,nameloc)));
34     end
35     elseif ndims(getfield(OldField2,nameloc)) == 2
36     disp([' concatenating, 2d'])
37     NewField=setfield(NewField,nameloc, ...
38     cat(3,getfield(OldField1,nameloc),getfield(OldField2,nameloc)));
39     elseif strcmp(nameloc,'T')
40     disp([' concatenating, 1d'])
41     NewField=setfield(NewField,nameloc, ...
42     cat(1,getfield(OldField1,nameloc),getfield(OldField2,nameloc)));
43    
44     elseif strcmp(nameloc,'iter')
45     disp([' concatenating, 1d'])
46     NewField=setfield(NewField,nameloc, ...
47     cat(1,getfield(OldField1,nameloc),getfield(OldField2,nameloc)));
48    
49     elseif strcmp(nameloc,'iters_read_from_file')
50     disp([' concatenating, 1d'])
51     NewField=setfield(NewField,nameloc, ...
52     cat(1,getfield(OldField1,nameloc),getfield(OldField2,nameloc)));
53     else
54     disp([' replacing'])
55     NewField=setfield(NewField,nameloc,getfield(OldField1,nameloc));
56    
57     end
58    
59     end
60     end
61    
62    
63     return

  ViewVC Help
Powered by ViewVC 1.1.22