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

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

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


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

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